Added cubby-holes for new projects.
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..411d0ed
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,10 @@
+*~
+*.class
+.classpath
+.project
+.pydevproject
+.settings
+.javacp*
+target
+*.iml
+.idea
diff --git a/cli/pom.xml b/cli/pom.xml
new file mode 100644
index 0000000..80e173d
--- /dev/null
+++ b/cli/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onlab.onos</groupId>
+        <artifactId>onos</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>onos-cli</artifactId>
+    <packaging>bundle</packaging>
+
+    <description>ONOS administrative console command-line extensions
+    </description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.onlab.onos</groupId>
+            <artifactId>onos-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.osgi</groupId>
+            <artifactId>org.osgi.core</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.karaf.shell</groupId>
+            <artifactId>org.apache.karaf.shell.console</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/cli/src/main/java/org/onlab/onos/cli/AbstractShellCommand.java b/cli/src/main/java/org/onlab/onos/cli/AbstractShellCommand.java
new file mode 100644
index 0000000..aeea443
--- /dev/null
+++ b/cli/src/main/java/org/onlab/onos/cli/AbstractShellCommand.java
@@ -0,0 +1,24 @@
+package org.onlab.onos.cli;
+
+import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.osgi.framework.BundleContext;
+import org.osgi.framework.FrameworkUtil;
+
+/**
+ * Base abstraction of Karaf shell commands.
+ */
+public abstract class AbstractShellCommand extends OsgiCommandSupport {
+
+    /**
+     * Returns the reference to the implementaiton of the specified service.
+     *
+     * @param serviceClass service class
+     * @param <T>          type of service
+     * @return service implementation
+     */
+    static <T> T get(Class<T> serviceClass) {
+        BundleContext bc = FrameworkUtil.getBundle(AbstractShellCommand.class).getBundleContext();
+        return bc.getService(bc.getServiceReference(serviceClass));
+    }
+
+}
diff --git a/cli/src/main/java/org/onlab/onos/cli/GreetCommand.java b/cli/src/main/java/org/onlab/onos/cli/GreetCommand.java
new file mode 100644
index 0000000..dd8ae81
--- /dev/null
+++ b/cli/src/main/java/org/onlab/onos/cli/GreetCommand.java
@@ -0,0 +1,24 @@
+package org.onlab.onos.cli;
+
+import org.apache.karaf.shell.commands.Argument;
+import org.apache.karaf.shell.commands.Command;
+import org.apache.karaf.shell.console.OsgiCommandSupport;
+import org.onlab.onos.net.GreetService;
+
+/**
+ * Simple command example to demonstrate use of Karaf shell extensions; shows
+ * use of an optional parameter as well.
+ */
+@Command(scope = "onos", name = "greet", description = "Issues a greeting")
+public class GreetCommand extends OsgiCommandSupport {
+
+    @Argument(index = 0, name = "name", description = "Name to greet",
+              required = false, multiValued = false)
+    String name = "dude";
+
+    @Override
+    protected Object doExecute() throws Exception {
+        System.out.println(getService(GreetService.class).yo(name));
+        return null;
+    }
+}
diff --git a/cli/src/main/java/org/onlab/onos/cli/NameCompleter.java b/cli/src/main/java/org/onlab/onos/cli/NameCompleter.java
new file mode 100644
index 0000000..bdf3f72
--- /dev/null
+++ b/cli/src/main/java/org/onlab/onos/cli/NameCompleter.java
@@ -0,0 +1,33 @@
+package org.onlab.onos.cli;
+
+import org.apache.karaf.shell.console.Completer;
+import org.apache.karaf.shell.console.completer.StringsCompleter;
+import org.onlab.onos.net.GreetService;
+
+import java.util.Iterator;
+import java.util.List;
+import java.util.SortedSet;
+
+/**
+ * Simple example of a command-line parameter completer.
+ * For a more open-ended sets a more efficient implementation would be required.
+ */
+public class NameCompleter implements Completer {
+    @Override
+    public int complete(String buffer, int cursor, List<String> candidates) {
+        // Delegate string completer
+        StringsCompleter delegate = new StringsCompleter();
+
+        // Fetch our service and feed it's offerings to the string completer
+        GreetService greetService = AbstractShellCommand.get(GreetService.class);
+        Iterator<String> it = greetService.names().iterator();
+        SortedSet<String> strings = delegate.getStrings();
+        while (it.hasNext()) {
+            strings.add(it.next());
+        }
+
+        // Now let the completer do the work for figuring out what to offer.
+        return delegate.complete(buffer, cursor, candidates);
+    }
+
+}
diff --git a/cli/src/main/javadoc/org/onlab/onos/cli/package.html b/cli/src/main/javadoc/org/onlab/onos/cli/package.html
new file mode 100644
index 0000000..dacfec0
--- /dev/null
+++ b/cli/src/main/javadoc/org/onlab/onos/cli/package.html
@@ -0,0 +1,3 @@
+<body>
+Administrative console command-line extensions.
+</body>
diff --git a/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
new file mode 100644
index 0000000..5cc83ef
--- /dev/null
+++ b/cli/src/main/resources/OSGI-INF/blueprint/shell-config.xml
@@ -0,0 +1,14 @@
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0">
+
+    <command-bundle xmlns="http://karaf.apache.org/xmlns/shell/v1.1.0">
+        <command>
+            <action class="org.onlab.onos.cli.GreetCommand"/>
+            <completers>
+                <ref component-id="nameCompleter"/>
+            </completers>
+        </command>
+    </command-bundle>
+
+    <bean id="nameCompleter" class="org.onlab.onos.cli.NameCompleter"/>
+
+</blueprint>
diff --git a/features.xml b/features.xml
deleted file mode 100644
index 461d684..0000000
--- a/features.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

-<!--

-  ~ Copyright (c) 2014 Hewlett-Packard Development Company, L.P.

-  ~

-  ~ This program and the accompanying materials are made available under the

-  ~ terms of the Eclipse Public License v1.0 which accompanies this distribution,

-  ~ and is available at http://www.eclipse.org/legal/epl-v10.html

-  -->

-

-<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"

-          name="net.onrc.onos-1.0.0">

-    <repository>mvn:net.onrc.onos/onos-features/1.0.0-SNAPSHOT/xml/features</repository>

-

-    <feature name="thirdparty" version="1.0.0"

-             description="ONOS 3rd party dependencies">

-        <bundle>mvn:com.google.code.findbugs/annotations/2.0.2</bundle>

-        <bundle>mvn:io.netty/netty/3.9.2.Final</bundle>

-        <bundle>mvn:com.google.guava/guava/17.0</bundle>  

-        <bundle>mvn:com.google.guava/guava/15.0</bundle>  

-

-    </feature>

-

-    <feature name="base" version="1.0.0"

-            description="ONOS Base">

-        <feature>scr</feature>

-        <feature>thirdparty</feature>

-        <bundle>mvn:net.onrc.onos.sb/onos-sb/0.0.1</bundle>

-        <bundle>mvn:org.projectfloodlight/openflowj/0.3.6-SNAPSHOT</bundle>

-    </feature>

-

-</features>

diff --git a/features/features.xml b/features/features.xml
index 4b8f8cb..1c8f985 100644
--- a/features/features.xml
+++ b/features/features.xml
@@ -1,22 +1,65 @@
 <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
 <features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
-          name="net.onrc.onos-1.0.0">
-    <repository>mvn:net.onrc.onos/onos-features/1.0.0-SNAPSHOT/xml/features</repository>
+          name="onos-1.0.0">
+    <repository>mvn:org.onlab.onos/onos-features/1.0.0-SNAPSHOT/xml/features</repository>
 
-    <feature name="onos-thirdparty" version="1.0.0"
+    <feature name="onos-thirdparty-base" version="1.0.0"
              description="ONOS 3rd party dependencies">
-        <bundle>mvn:com.google.code.findbugs/annotations/2.0.2</bundle>
+        <bundle>mvn:com.google.guava/guava/17.0</bundle>
         <bundle>mvn:io.netty/netty/3.9.2.Final</bundle>
-        <bundle>mvn:com.google.guava/guava/17.0</bundle>  
-        <bundle>mvn:com.google.guava/guava/15.0</bundle>  
     </feature>
 
-    <feature name="onos-of-ctl" version="1.0.0"
-            description="ONOS OpenFlow Libraries &amp; Controller">
+    <feature name="onos-thirdparty-web" version="1.0.0"
+             description="ONOS 3rd party dependencies">
+        <feature>war</feature>
+        <bundle>mvn:com.fasterxml.jackson.core/jackson-core/2.4.2</bundle>
+        <bundle>mvn:com.fasterxml.jackson.core/jackson-annotations/2.4.2</bundle>
+        <bundle>mvn:com.fasterxml.jackson.core/jackson-databind/2.4.2</bundle>
+        <bundle>mvn:com.sun.jersey/jersey-core/1.18.1</bundle>
+        <bundle>mvn:com.sun.jersey/jersey-server/1.18.1</bundle>
+        <bundle>mvn:com.sun.jersey/jersey-servlet/1.18.1</bundle>
+    </feature>
+
+    <feature name="onos-core" version="1.0.0"
+             description="ONOS core components">
         <feature>scr</feature>
-        <feature>thirdparty</feature>
-        <bundle>mvn:net.onrc.onos.sb/onos-sb/0.0.1</bundle>
-        <bundle>mvn:org.projectfloodlight/openflowj/0.3.6-SNAPSHOT</bundle>
+        <feature>onos-thirdparty-base</feature>
+        <bundle>mvn:org.onlab.onos/onos-utils-osgi/1.0.0-SNAPSHOT</bundle>
+        <bundle>mvn:org.onlab.onos/onos-utils-rest/1.0.0-SNAPSHOT</bundle>
+
+        <bundle>mvn:org.onlab.onos/onos-api/1.0.0-SNAPSHOT</bundle>
+        <bundle>mvn:org.onlab.onos/onos-core/1.0.0-SNAPSHOT</bundle>
+    </feature>
+
+    <feature name="onos-rest" version="1.0.0"
+             description="ONOS REST API components">
+        <feature>onos-core</feature>
+        <feature>onos-thirdparty-web</feature>
+        <bundle>mvn:org.onlab.onos/onos-rest/1.0.0-SNAPSHOT</bundle>
+    </feature>
+
+    <feature name="onos-gui" version="1.0.0"
+             description="ONOS GUI console components">
+        <feature>onos-core</feature>
+        <feature>onos-thirdparty-web</feature>
+        <bundle>mvn:org.onlab.onos/onos-gui/1.0.0-SNAPSHOT</bundle>
+    </feature>
+
+    <feature name="onos-cli" version="1.0.0"
+             description="ONOS admin command console components">
+        <feature>onos-core</feature>
+        <bundle>mvn:org.onlab.onos/onos-cli/1.0.0-SNAPSHOT</bundle>
+    </feature>
+
+    <feature name="onos-openflow" version="1.0.0"
+            description="ONOS OpenFlow API, Controller &amp; Providers">
+        <feature>onos-core</feature>
+        <bundle>mvn:io.netty/netty/3.9.2.Final</bundle>
+        <bundle>mvn:com.google.guava/guava/15.0</bundle>
+
+        <bundle>mvn:org.onlab.onos/openflow-api/1.0.0-SNAPSHOT</bundle>
+        <bundle>mvn:org.onlab.onos/openflow-ctl/1.0.0-SNAPSHOT</bundle>
+        <bundle>mvn:org.onlab.onos/onos-of-providers/1.0.0-SNAPSHOT</bundle>
     </feature>
 
 </features>
diff --git a/features/old-features.xml b/features/old-features.xml
new file mode 100644
index 0000000..46e68ca
--- /dev/null
+++ b/features/old-features.xml
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!--
+  ~ Copyright (c) 2014 Hewlett-Packard Development Company, L.P.
+  ~
+  ~ This program and the accompanying materials are made available under the
+  ~ terms of the Eclipse Public License v1.0 which accompanies this distribution,
+  ~ and is available at http://www.eclipse.org/legal/epl-v10.html
+  -->
+
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.2.0"
+          name="net.onrc.onos-1.0.0">
+    <repository>mvn:net.onrc.onos/onos-features/1.0.0-SNAPSHOT/xml/features</repository>
+
+    <feature name="thirdparty" version="1.0.0"
+             description="ONOS 3rd party dependencies">
+        <bundle>mvn:com.google.code.findbugs/annotations/2.0.2</bundle>
+        <bundle>mvn:io.netty/netty/3.9.2.Final</bundle>
+        <bundle>mvn:com.google.guava/guava/17.0</bundle>  
+        <bundle>mvn:com.google.guava/guava/15.0</bundle>  
+
+    </feature>
+
+    <feature name="base" version="1.0.0"
+            description="ONOS Base">
+        <feature>scr</feature>
+        <feature>thirdparty</feature>
+        <bundle>mvn:net.onrc.onos.sb/onos-sb/0.0.1</bundle>
+        <bundle>mvn:org.projectfloodlight/openflowj/0.3.6-SNAPSHOT</bundle>
+    </feature>
+
+</features>
diff --git a/features/pom.xml b/features/pom.xml
index baf4bf7..e370fc6 100644
--- a/features/pom.xml
+++ b/features/pom.xml
@@ -5,16 +5,15 @@
     <modelVersion>4.0.0</modelVersion>
 
     <parent>
-        <groupId>net.onrc.onos</groupId>
+        <groupId>org.onlab.onos</groupId>
         <artifactId>onos</artifactId>
         <version>1.0.0-SNAPSHOT</version>
         <relativePath>../pom.xml</relativePath>
     </parent>
 
     <artifactId>onos-features</artifactId>
-    <packaging>jar</packaging>
+    <packaging>pom</packaging>
 
-    <name>onos-features</name>
     <description>ONOS Apache Karaf feature definitions</description>
 
     <build>
@@ -22,7 +21,7 @@
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
                 <artifactId>build-helper-maven-plugin</artifactId>
-                <version>1.3</version>
+                <version>1.9</version>
                 <executions>
                     <execution>
                         <id>attach-artifacts</id>
diff --git a/net/api/pom.xml b/net/api/pom.xml
new file mode 100644
index 0000000..f74d08e
--- /dev/null
+++ b/net/api/pom.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onlab.onos</groupId>
+        <artifactId>onos-net</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>onos-api</artifactId>
+    <packaging>bundle</packaging>
+
+    <description>ONOS network control API</description>
+
+</project>
diff --git a/net/api/src/main/java/net/onrc/onos/api/Description.java b/net/api/src/main/java/net/onrc/onos/api/Description.java
deleted file mode 100644
index 8a3c127..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/Description.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package net.onrc.onos.api;
-
-/**
- * Base abstraction of a piece of information about network elements.
- */
-public interface Description {
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/DeviceId.java b/net/api/src/main/java/net/onrc/onos/api/DeviceId.java
deleted file mode 100644
index 2210742..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/DeviceId.java
+++ /dev/null
@@ -1,25 +0,0 @@
-package net.onrc.onos.api;
-
-import java.net.URI;
-
-/**
- * Immutable representaion of a device identity.
- */
-public class DeviceId {
-
-    private final URI uri;
-
-    public DeviceId(URI uri) {
-        this.uri = uri;
-    }
-
-    /**
-     * Returns the backing URI.
-     *
-     * @return backing device URI
-     */
-    public URI uri() {
-        return uri;
-    }
-
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/PortNumber.java b/net/api/src/main/java/net/onrc/onos/api/PortNumber.java
deleted file mode 100644
index 9a6dddd..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/PortNumber.java
+++ /dev/null
@@ -1,7 +0,0 @@
-package net.onrc.onos.api;
-
-/**
- * Representation of a port number.
- */
-public interface PortNumber {
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/Provider.java b/net/api/src/main/java/net/onrc/onos/api/Provider.java
deleted file mode 100644
index 1b38cf4..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/Provider.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package net.onrc.onos.api;
-
-/**
- * Abstraction of a provider of information about network environment.
- */
-public interface Provider {
-
-    ProviderId id();
-
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/ProviderBroker.java b/net/api/src/main/java/net/onrc/onos/api/ProviderBroker.java
deleted file mode 100644
index ef2d4dc..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/ProviderBroker.java
+++ /dev/null
@@ -1,27 +0,0 @@
-package net.onrc.onos.api;
-
-/**
- * Broker used for registering/unregistering information providers with the core.
- *
- * @param <T> type of the information provider
- * @param <S> type of the provider service
- */
-public interface ProviderBroker<T extends Provider, S extends ProviderService> {
-
-    /**
-     * Registers the supplied provider with the core.
-     *
-     * @param provider provider to be registered
-     * @return provider service for injecting information into core
-     */
-    S register(T provider);
-
-    /**
-     * Unregisters the supplied provider. As a result the previously issued
-     * provider service will be invalidated.
-     *
-     * @param provider provider to be unregistered
-     */
-    void unregister(T provider);
-
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/ProviderId.java b/net/api/src/main/java/net/onrc/onos/api/ProviderId.java
deleted file mode 100644
index 3f29bac..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/ProviderId.java
+++ /dev/null
@@ -1,43 +0,0 @@
-package net.onrc.onos.api;
-
-/**
- * Notion of provider identity.
- */
-public class ProviderId {
-
-    private final String id;
-
-    public ProviderId(String id) {
-        this.id = id;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-
-        ProviderId that = (ProviderId) o;
-
-        if (!id.equals(that.id)) {
-            return false;
-        }
-
-        return true;
-    }
-
-    @Override
-    public int hashCode() {
-        return id.hashCode();
-    }
-
-    @Override
-    public String toString() {
-        return "ProviderId{" +
-                "id='" + id + '\'' +
-                '}';
-    }
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/ProviderService.java b/net/api/src/main/java/net/onrc/onos/api/ProviderService.java
deleted file mode 100644
index add3366..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/ProviderService.java
+++ /dev/null
@@ -1,8 +0,0 @@
-package net.onrc.onos.api;
-
-/**
- * Abstraction of a service through which providers can inject information
- * about the network environment into the core.
- */
-public interface ProviderService {
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/device/DeviceDescription.java b/net/api/src/main/java/net/onrc/onos/api/device/DeviceDescription.java
deleted file mode 100644
index ef9a694..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/device/DeviceDescription.java
+++ /dev/null
@@ -1,21 +0,0 @@
-package net.onrc.onos.api.device;
-
-import net.onrc.onos.api.Description;
-
-import java.net.URI;
-
-/**
- * Carrier of immutable information about a device.
- */
-public interface DeviceDescription extends Description {
-
-    /**
-     * Protocol/provider specific URI that can be used to encode the identity
-     * information required to communicate with the device externally, e.g.
-     * datapath ID.
-     *
-     * @return provider specific URI for the device
-     */
-    URI deviceURI();
-
-}
\ No newline at end of file
diff --git a/net/api/src/main/java/net/onrc/onos/api/device/DeviceProvider.java b/net/api/src/main/java/net/onrc/onos/api/device/DeviceProvider.java
deleted file mode 100644
index c93cab5..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/device/DeviceProvider.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package net.onrc.onos.api.device;
-
-import net.onrc.onos.api.Provider;
-
-/**
- * Abstraction of a device information provider.
- */
-public interface DeviceProvider extends Provider {
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/device/DeviceProviderBroker.java b/net/api/src/main/java/net/onrc/onos/api/device/DeviceProviderBroker.java
deleted file mode 100644
index fdbe322..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/device/DeviceProviderBroker.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package net.onrc.onos.api.device;
-
-import net.onrc.onos.api.ProviderBroker;
-
-/**
- * Abstraction of a device provider brokerage.
- */
-public interface DeviceProviderBroker
-        extends ProviderBroker<DeviceProvider, DeviceProviderService> {
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/device/DeviceProviderService.java b/net/api/src/main/java/net/onrc/onos/api/device/DeviceProviderService.java
deleted file mode 100644
index b0a33a6..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/device/DeviceProviderService.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package net.onrc.onos.api.device;
-
-import net.onrc.onos.api.ProviderService;
-
-import java.util.List;
-
-/**
- * Service through which device providers can inject device information into
- * the core.
- */
-public interface DeviceProviderService extends ProviderService {
-
-    // TODO: define suspend and remove actions on the mezzanine administrative API
-
-    /**
-     * Signals the core that a device has connected or has been detected somehow.
-     *
-     * @param deviceDescription information about network device
-     */
-    void deviceConnected(DeviceDescription deviceDescription);
-
-    /**
-     * Signals the core that a device has disconnected or is no longer reachable.
-     *
-     * @param deviceDescription device to be removed
-     */
-    void deviceDisconnected(DeviceDescription deviceDescription);
-
-    /**
-     * Sends information about all ports of a device. It is up to the core to
-     * determine what has changed.
-     *
-     * @param ports list of device ports
-     */
-    void updatePorts(List<PortDescription> ports);
-
-    /**
-     * Used to notify the core about port status change of a single port.
-     *
-     * @param port description of the port that changed
-     */
-    void portStatusChanged(PortDescription port);
-
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/device/PortDescription.java b/net/api/src/main/java/net/onrc/onos/api/device/PortDescription.java
deleted file mode 100644
index 9f5db2a..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/device/PortDescription.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package net.onrc.onos.api.device;
-
-/**
- * Information about a port.
- */
-public interface PortDescription {
-
-    // TODO: possibly relocate this to a common ground so that this can also used by host tracking if required
-
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/flow/FlowDescription.java b/net/api/src/main/java/net/onrc/onos/api/flow/FlowDescription.java
deleted file mode 100644
index 80fc051..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/flow/FlowDescription.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package net.onrc.onos.api.flow;
-
-package net.onrc.onos.api.Description;
-
-/**
- * Information about a flow rule.
- */
-public interface FlowDescription extends Description {
-
-    // Match and action, possibly reason for flow rule, unless reason is too OF-specific.
-
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/flow/FlowRuleProvider.java b/net/api/src/main/java/net/onrc/onos/api/flow/FlowRuleProvider.java
deleted file mode 100644
index acb63b4..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/flow/FlowRuleProvider.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package net.onrc.onos.api.flow;
-
-import net.onrc.onos.api.Provider;
-
-/**
- * Abstraction of a flow rule provider.
- */
-public interface FlowRuleProvider extends Provider {
-}
\ No newline at end of file
diff --git a/net/api/src/main/java/net/onrc/onos/api/flow/FlowRuleProviderBroker.java b/net/api/src/main/java/net/onrc/onos/api/flow/FlowRuleProviderBroker.java
deleted file mode 100644
index 27f1ca6..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/flow/FlowRuleProviderBroker.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package net.onrc.onos.api.flow;
-
-import net.onrc.onos.api.ProviderBroker;
-
-/**
- * Abstraction for a flow rule provider brokerage.
- */
-public interface FlowRuleProviderBroker
-        extends ProviderBroker<FlowRuleProvider, FlowRuleProviderService> {
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/flow/FlowRuleProviderService.java b/net/api/src/main/java/net/onrc/onos/api/flow/FlowRuleProviderService.java
deleted file mode 100644
index 8f90c32..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/flow/FlowRuleProviderService.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package net.onrc.onos.api.flow;
-
-import net.onrc.onos.api.ProviderService;
-
-/**
- * Service through which flowrule providers can inject flowrule information into
- * the core.
- */
-public interface FlowRuleProviderService extends ProviderService {
-
-    /**
-     * Signals that a flow that was previously installed has been removed.
-     *
-     * @param flowDescription information about the removed flow
-     */
-    void flowRemoved(FlowDescription flowDescription);
-
-    /**
-     * Signals that a flowrule is missing for some network traffic.
-     *
-     * @param flowDescription information about traffic in need of flow rule(s)
-     */
-    void flowMissing(FlowDescription flowDescription);
-
-    /**
-     * Signals that a flowrule has been added.
-     *
-     * TODO  think about if this really makes sense, e.g. if stats collection or
-     * something can leverage it.
-     *
-     * @param flowDescription the rule that was added
-     */
-    void flowAdded(FlowDescription flowDescription);
-
-}
\ No newline at end of file
diff --git a/net/api/src/main/java/net/onrc/onos/api/host/HostDescription.java b/net/api/src/main/java/net/onrc/onos/api/host/HostDescription.java
deleted file mode 100644
index a397155..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/host/HostDescription.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package net.onrc.onos.api.host;
-
-/**
- * Information describing host and its location.
- */
-public interface HostDescription {
-
-    // IP, MAC, VLAN-ID, HostLocation -> (ConnectionPoint + timestamp)
-    
-
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/host/HostProvider.java b/net/api/src/main/java/net/onrc/onos/api/host/HostProvider.java
deleted file mode 100644
index f05e26d..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/host/HostProvider.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package net.onrc.onos.api.host;
-
-import net.onrc.onos.api.Provider;
-
-/**
- * Provider of information about hosts and their location on the network.
- */
-public interface HostProvider extends Provider {
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/host/HostProviderBroker.java b/net/api/src/main/java/net/onrc/onos/api/host/HostProviderBroker.java
deleted file mode 100644
index c799b20..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/host/HostProviderBroker.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package net.onrc.onos.api.host;
-
-import net.onrc.onos.api.ProviderBroker;
-
-/**
- * Abstraction of a host provider brokerage.
- */
-public interface HostProviderBroker
-        extends ProviderBroker<HostProvider, HostProviderService> {
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/host/HostProviderService.java b/net/api/src/main/java/net/onrc/onos/api/host/HostProviderService.java
deleted file mode 100644
index 662ba75..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/host/HostProviderService.java
+++ /dev/null
@@ -1,12 +0,0 @@
-package net.onrc.onos.api.host;
-
-import net.onrc.onos.api.ProviderService;
-
-/**
- * Means of conveying host information to the core.
- */
-public interface HostProviderService extends ProviderService {
-    
-    void hostDetected(HostDescription hostDescription);
-
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/link/LinkDescription.java b/net/api/src/main/java/net/onrc/onos/api/link/LinkDescription.java
deleted file mode 100644
index c40f522..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/link/LinkDescription.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package net.onrc.onos.api.link;
-
-/**
- * Describes an infrastructure link.
- */
-public interface LinkDescription {
-
-    // TODO: src, dst connection points, which are pairs of (DeviceId, PortNumber)
-
-//    On the north:
-//    Link = (ConnectPoint src, ConnectPoint dst);
-//    ConnectPoint = (DeviceId, PortNumber);
-
-//    On the south
-//    LinkDescription ~ Link
-
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/link/LinkProvider.java b/net/api/src/main/java/net/onrc/onos/api/link/LinkProvider.java
deleted file mode 100644
index 4d7ab86..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/link/LinkProvider.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package net.onrc.onos.api.link;
-
-import net.onrc.onos.api.Provider;
-
-/**
- * Abstraction of an entity providing information about infrastructure links
- * to the core.
- */
-public interface LinkProvider extends Provider {
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/link/LinkProviderBroker.java b/net/api/src/main/java/net/onrc/onos/api/link/LinkProviderBroker.java
deleted file mode 100644
index 8da7bab..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/link/LinkProviderBroker.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package net.onrc.onos.api.link;
-
-import net.onrc.onos.api.ProviderBroker;
-
-/**
- * Abstraction of an infrastructure link provider brokerage.
- */
-public interface LinkProviderBroker
-        extends ProviderBroker<LinkProvider, LinkProviderService> {
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/link/LinkProviderService.java b/net/api/src/main/java/net/onrc/onos/api/link/LinkProviderService.java
deleted file mode 100644
index 23fced8..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/link/LinkProviderService.java
+++ /dev/null
@@ -1,24 +0,0 @@
-package net.onrc.onos.api.link;
-
-import net.onrc.onos.api.ProviderService;
-
-/**
- * Means for injecting link information into the core.
- */
-public interface LinkProviderService extends ProviderService {
-
-    /**
-     * Signals that an infrastructure link has been connected.
-     *
-     * @param linkDescription link information
-     */
-    void linkConnected(LinkDescription linkDescription);
-
-    /**
-     * Signals that an infrastructure link has been disconnected.
-     *
-     * @param linkDescription link information
-     */
-    void linkDisconnected(LinkDescription linkDescription);
-
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/topology/TopologyDescription.java b/net/api/src/main/java/net/onrc/onos/api/topology/TopologyDescription.java
deleted file mode 100644
index 306447e..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/topology/TopologyDescription.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package net.onrc.onos.api.topology;
-
-import net.onrc.onos.api.Description;
-
-import java.util.Collection;
-
-/**
- * Describes attribute(s) of a network topology.
- */
-public interface TopologyDescription extends Description {
-
-    /**
-     * A collection of Device, Link, and Host descriptors that describe
-     * the changes tha have occurred in the network topology.
-     *
-     * @return network element descriptions describing topology change
-     */
-    Collection<Description> details();
-
-}
\ No newline at end of file
diff --git a/net/api/src/main/java/net/onrc/onos/api/topology/TopologyProvider.java b/net/api/src/main/java/net/onrc/onos/api/topology/TopologyProvider.java
deleted file mode 100644
index f997c61..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/topology/TopologyProvider.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package net.onrc.onos.api.topology;
-
-import net.onrc.onos.api.Provider;
-
-/**
- * Means for injecting topology information into the core.
- */
-public interface TopologyProvider extends Provider {
-
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/topology/TopologyProviderBroker.java b/net/api/src/main/java/net/onrc/onos/api/topology/TopologyProviderBroker.java
deleted file mode 100644
index 207f33a..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/topology/TopologyProviderBroker.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package net.onrc.onos.api.topology;
-
-import net.onrc.onos.api.ProviderBroker;
-
-/**
- * Abstraction of a network topology provider brokerage.
- */
-public interface TopologyProviderBroker extends
-        ProviderBroker<TopologyProvider, TopologyProviderService> {
-}
diff --git a/net/api/src/main/java/net/onrc/onos/api/topology/TopologyProviderService.java b/net/api/src/main/java/net/onrc/onos/api/topology/TopologyProviderService.java
deleted file mode 100644
index 67fbb1d..0000000
--- a/net/api/src/main/java/net/onrc/onos/api/topology/TopologyProviderService.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package net.onrc.onos.api.topology;
-
-import net.onrc.onos.api.ProviderService;
-
-/**
- * Means for injecting topology information into the core.
- */
-public interface TopologyProviderService extends ProviderService {
-
-    // What can be conveyed in a topology that isn't by individual
-    // providers?
-
-    /**
-     * Signals the core that some aspect of the topology has changed.
-     *
-     * @param topoDescription information about topology
-     */
-    void topologyChanged(TopologyDescription topoDescription);
-
-}
diff --git a/net/api/src/main/java/org/onlab/onos/net/Description.java b/net/api/src/main/java/org/onlab/onos/net/Description.java
new file mode 100644
index 0000000..38338c1
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/Description.java
@@ -0,0 +1,7 @@
+package org.onlab.onos.net;
+
+/**
+ * Base abstraction of a piece of information about network elements.
+ */
+public interface Description {
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/DeviceId.java b/net/api/src/main/java/org/onlab/onos/net/DeviceId.java
new file mode 100644
index 0000000..ebb3fb7
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/DeviceId.java
@@ -0,0 +1,25 @@
+package org.onlab.onos.net;
+
+import java.net.URI;
+
+/**
+ * Immutable representaion of a device identity.
+ */
+public class DeviceId {
+
+    private final URI uri;
+
+    public DeviceId(URI uri) {
+        this.uri = uri;
+    }
+
+    /**
+     * Returns the backing URI.
+     *
+     * @return backing device URI
+     */
+    public URI uri() {
+        return uri;
+    }
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/GreetService.java b/net/api/src/main/java/org/onlab/onos/net/GreetService.java
new file mode 100644
index 0000000..09f0d96
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/GreetService.java
@@ -0,0 +1,23 @@
+package org.onlab.onos.net;
+
+/**
+ * Example of a simple service that provides greetings and it
+ * remembers the names which were greeted.
+ */
+public interface GreetService {
+
+    /**
+     * Returns a greeting tailored to the specified name.
+     *
+     * @param name some name
+     * @return greeting
+     */
+    String yo(String name);
+
+    /**
+     * Returns an iterable of names encountered thus far.
+     *
+     * @return iterable of names
+     */
+    Iterable<String> names();
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/PortNumber.java b/net/api/src/main/java/org/onlab/onos/net/PortNumber.java
new file mode 100644
index 0000000..4ea4e24
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/PortNumber.java
@@ -0,0 +1,7 @@
+package org.onlab.onos.net;
+
+/**
+ * Representation of a port number.
+ */
+public interface PortNumber {
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/Provider.java b/net/api/src/main/java/org/onlab/onos/net/Provider.java
new file mode 100644
index 0000000..eda436b
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/Provider.java
@@ -0,0 +1,10 @@
+package org.onlab.onos.net;
+
+/**
+ * Abstraction of a provider of information about network environment.
+ */
+public interface Provider {
+
+    ProviderId id();
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/ProviderBroker.java b/net/api/src/main/java/org/onlab/onos/net/ProviderBroker.java
new file mode 100644
index 0000000..63d7189
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/ProviderBroker.java
@@ -0,0 +1,27 @@
+package org.onlab.onos.net;
+
+/**
+ * Broker used for registering/unregistering information providers with the core.
+ *
+ * @param <T> type of the information provider
+ * @param <S> type of the provider service
+ */
+public interface ProviderBroker<T extends Provider, S extends ProviderService> {
+
+    /**
+     * Registers the supplied provider with the core.
+     *
+     * @param provider provider to be registered
+     * @return provider service for injecting information into core
+     */
+    S register(T provider);
+
+    /**
+     * Unregisters the supplied provider. As a result the previously issued
+     * provider service will be invalidated.
+     *
+     * @param provider provider to be unregistered
+     */
+    void unregister(T provider);
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/ProviderId.java b/net/api/src/main/java/org/onlab/onos/net/ProviderId.java
new file mode 100644
index 0000000..53dd739
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/ProviderId.java
@@ -0,0 +1,43 @@
+package org.onlab.onos.net;
+
+/**
+ * Notion of provider identity.
+ */
+public class ProviderId {
+
+    private final String id;
+
+    public ProviderId(String id) {
+        this.id = id;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+
+        ProviderId that = (ProviderId) o;
+
+        if (!id.equals(that.id)) {
+            return false;
+        }
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        return id.hashCode();
+    }
+
+    @Override
+    public String toString() {
+        return "ProviderId{" +
+                "id='" + id + '\'' +
+                '}';
+    }
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/ProviderService.java b/net/api/src/main/java/org/onlab/onos/net/ProviderService.java
new file mode 100644
index 0000000..8a7d7e9
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/ProviderService.java
@@ -0,0 +1,8 @@
+package org.onlab.onos.net;
+
+/**
+ * Abstraction of a service through which providers can inject information
+ * about the network environment into the core.
+ */
+public interface ProviderService {
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DeviceDescription.java b/net/api/src/main/java/org/onlab/onos/net/device/DeviceDescription.java
new file mode 100644
index 0000000..2b83890
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/device/DeviceDescription.java
@@ -0,0 +1,21 @@
+package org.onlab.onos.net.device;
+
+import org.onlab.onos.net.Description;
+
+import java.net.URI;
+
+/**
+ * Carrier of immutable information about a device.
+ */
+public interface DeviceDescription extends Description {
+
+    /**
+     * Protocol/provider specific URI that can be used to encode the identity
+     * information required to communicate with the device externally, e.g.
+     * datapath ID.
+     *
+     * @return provider specific URI for the device
+     */
+    URI deviceURI();
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DeviceProvider.java b/net/api/src/main/java/org/onlab/onos/net/device/DeviceProvider.java
new file mode 100644
index 0000000..04ca92c
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/device/DeviceProvider.java
@@ -0,0 +1,9 @@
+package org.onlab.onos.net.device;
+
+import org.onlab.onos.net.Provider;
+
+/**
+ * Abstraction of a device information provider.
+ */
+public interface DeviceProvider extends Provider {
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DeviceProviderBroker.java b/net/api/src/main/java/org/onlab/onos/net/device/DeviceProviderBroker.java
new file mode 100644
index 0000000..926f76e
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/device/DeviceProviderBroker.java
@@ -0,0 +1,10 @@
+package org.onlab.onos.net.device;
+
+import org.onlab.onos.net.ProviderBroker;
+
+/**
+ * Abstraction of a device provider brokerage.
+ */
+public interface DeviceProviderBroker
+        extends ProviderBroker<DeviceProvider, DeviceProviderService> {
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/DeviceProviderService.java b/net/api/src/main/java/org/onlab/onos/net/device/DeviceProviderService.java
new file mode 100644
index 0000000..e5ee1f0
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/device/DeviceProviderService.java
@@ -0,0 +1,44 @@
+package org.onlab.onos.net.device;
+
+import org.onlab.onos.net.ProviderService;
+
+import java.util.List;
+
+/**
+ * Service through which device providers can inject device information into
+ * the core.
+ */
+public interface DeviceProviderService extends ProviderService {
+
+    // TODO: define suspend and remove actions on the mezzanine administrative API
+
+    /**
+     * Signals the core that a device has connected or has been detected somehow.
+     *
+     * @param deviceDescription information about network device
+     */
+    void deviceConnected(DeviceDescription deviceDescription);
+
+    /**
+     * Signals the core that a device has disconnected or is no longer reachable.
+     *
+     * @param deviceDescription device to be removed
+     */
+    void deviceDisconnected(DeviceDescription deviceDescription);
+
+    /**
+     * Sends information about all ports of a device. It is up to the core to
+     * determine what has changed.
+     *
+     * @param ports list of device ports
+     */
+    void updatePorts(List<PortDescription> ports);
+
+    /**
+     * Used to notify the core about port status change of a single port.
+     *
+     * @param port description of the port that changed
+     */
+    void portStatusChanged(PortDescription port);
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/device/PortDescription.java b/net/api/src/main/java/org/onlab/onos/net/device/PortDescription.java
new file mode 100644
index 0000000..4c944ab
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/device/PortDescription.java
@@ -0,0 +1,10 @@
+package org.onlab.onos.net.device;
+
+/**
+ * Information about a port.
+ */
+public interface PortDescription {
+
+    // TODO: possibly relocate this to a common ground so that this can also used by host tracking if required
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/flow/FlowDescription.java b/net/api/src/main/java/org/onlab/onos/net/flow/FlowDescription.java
new file mode 100644
index 0000000..2a64815
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/flow/FlowDescription.java
@@ -0,0 +1,12 @@
+package org.onlab.onos.net.flow;
+
+import org.onlab.onos.net.Description;
+
+/**
+ * Information about a flow rule.
+ */
+public interface FlowDescription extends Description {
+
+    // Match and action, possibly reason for flow rule, unless reason is too OF-specific.
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProvider.java b/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProvider.java
new file mode 100644
index 0000000..ac46da8
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProvider.java
@@ -0,0 +1,9 @@
+package org.onlab.onos.net.flow;
+
+import org.onlab.onos.net.Provider;
+
+/**
+ * Abstraction of a flow rule provider.
+ */
+public interface FlowRuleProvider extends Provider {
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderBroker.java b/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderBroker.java
new file mode 100644
index 0000000..c3f7602
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderBroker.java
@@ -0,0 +1,10 @@
+package org.onlab.onos.net.flow;
+
+import org.onlab.onos.net.ProviderBroker;
+
+/**
+ * Abstraction for a flow rule provider brokerage.
+ */
+public interface FlowRuleProviderBroker
+        extends ProviderBroker<FlowRuleProvider, FlowRuleProviderService> {
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java b/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java
new file mode 100644
index 0000000..9b26d76
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/flow/FlowRuleProviderService.java
@@ -0,0 +1,35 @@
+package org.onlab.onos.net.flow;
+
+import org.onlab.onos.net.ProviderService;
+
+/**
+ * Service through which flowrule providers can inject flowrule information into
+ * the core.
+ */
+public interface FlowRuleProviderService extends ProviderService {
+
+    /**
+     * Signals that a flow that was previously installed has been removed.
+     *
+     * @param flowDescription information about the removed flow
+     */
+    void flowRemoved(FlowDescription flowDescription);
+
+    /**
+     * Signals that a flowrule is missing for some network traffic.
+     *
+     * @param flowDescription information about traffic in need of flow rule(s)
+     */
+    void flowMissing(FlowDescription flowDescription);
+
+    /**
+     * Signals that a flowrule has been added.
+     *
+     * TODO  think about if this really makes sense, e.g. if stats collection or
+     * something can leverage it.
+     *
+     * @param flowDescription the rule that was added
+     */
+    void flowAdded(FlowDescription flowDescription);
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/host/HostDescription.java b/net/api/src/main/java/org/onlab/onos/net/host/HostDescription.java
new file mode 100644
index 0000000..e3c67b9
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/host/HostDescription.java
@@ -0,0 +1,11 @@
+package org.onlab.onos.net.host;
+
+/**
+ * Information describing host and its location.
+ */
+public interface HostDescription {
+
+    // IP, MAC, VLAN-ID, HostLocation -> (ConnectionPoint + timestamp)
+
+}
+
diff --git a/net/api/src/main/java/org/onlab/onos/net/host/HostProvider.java b/net/api/src/main/java/org/onlab/onos/net/host/HostProvider.java
new file mode 100644
index 0000000..1ad2c65
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/host/HostProvider.java
@@ -0,0 +1,9 @@
+package org.onlab.onos.net.host;
+
+import org.onlab.onos.net.Provider;
+
+/**
+ * Provider of information about hosts and their location on the network.
+ */
+public interface HostProvider extends Provider {
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/host/HostProviderBroker.java b/net/api/src/main/java/org/onlab/onos/net/host/HostProviderBroker.java
new file mode 100644
index 0000000..427e54e
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/host/HostProviderBroker.java
@@ -0,0 +1,10 @@
+package org.onlab.onos.net.host;
+
+import org.onlab.onos.net.ProviderBroker;
+
+/**
+ * Abstraction of a host provider brokerage.
+ */
+public interface HostProviderBroker
+        extends ProviderBroker<HostProvider, HostProviderService> {
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/host/HostProviderService.java b/net/api/src/main/java/org/onlab/onos/net/host/HostProviderService.java
new file mode 100644
index 0000000..4d5d470
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/host/HostProviderService.java
@@ -0,0 +1,12 @@
+package org.onlab.onos.net.host;
+
+import org.onlab.onos.net.ProviderService;
+
+/**
+ * Means of conveying host information to the core.
+ */
+public interface HostProviderService extends ProviderService {
+
+    void hostDetected(HostDescription hostDescription);
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkDescription.java b/net/api/src/main/java/org/onlab/onos/net/link/LinkDescription.java
new file mode 100644
index 0000000..8d712f0
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/link/LinkDescription.java
@@ -0,0 +1,17 @@
+package org.onlab.onos.net.link;
+
+/**
+ * Describes an infrastructure link.
+ */
+public interface LinkDescription {
+
+    // TODO: src, dst connection points, which are pairs of (DeviceId, PortNumber)
+
+//    On the north:
+//    Link = (ConnectPoint src, ConnectPoint dst);
+//    ConnectPoint = (DeviceId, PortNumber);
+
+//    On the south
+//    LinkDescription ~ Link
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkProvider.java b/net/api/src/main/java/org/onlab/onos/net/link/LinkProvider.java
new file mode 100644
index 0000000..57cc45d
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/link/LinkProvider.java
@@ -0,0 +1,10 @@
+package org.onlab.onos.net.link;
+
+import org.onlab.onos.net.Provider;
+
+/**
+ * Abstraction of an entity providing information about infrastructure links
+ * to the core.
+ */
+public interface LinkProvider extends Provider {
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderBroker.java b/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderBroker.java
new file mode 100644
index 0000000..b0bfb05
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderBroker.java
@@ -0,0 +1,10 @@
+package org.onlab.onos.net.link;
+
+import org.onlab.onos.net.ProviderBroker;
+
+/**
+ * Abstraction of an infrastructure link provider brokerage.
+ */
+public interface LinkProviderBroker
+        extends ProviderBroker<LinkProvider, LinkProviderService> {
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderService.java b/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderService.java
new file mode 100644
index 0000000..9f523f7
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/link/LinkProviderService.java
@@ -0,0 +1,24 @@
+package org.onlab.onos.net.link;
+
+import org.onlab.onos.net.ProviderService;
+
+/**
+ * Means for injecting link information into the core.
+ */
+public interface LinkProviderService extends ProviderService {
+
+    /**
+     * Signals that an infrastructure link has been connected.
+     *
+     * @param linkDescription link information
+     */
+    void linkConnected(LinkDescription linkDescription);
+
+    /**
+     * Signals that an infrastructure link has been disconnected.
+     *
+     * @param linkDescription link information
+     */
+    void linkDisconnected(LinkDescription linkDescription);
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/TopologyDescription.java b/net/api/src/main/java/org/onlab/onos/net/topology/TopologyDescription.java
new file mode 100644
index 0000000..0c55314
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/topology/TopologyDescription.java
@@ -0,0 +1,20 @@
+package org.onlab.onos.net.topology;
+
+import org.onlab.onos.net.Description;
+
+import java.util.Collection;
+
+/**
+ * Describes attribute(s) of a network topology.
+ */
+public interface TopologyDescription extends Description {
+
+    /**
+     * A collection of Device, Link, and Host descriptors that describe
+     * the changes tha have occurred in the network topology.
+     *
+     * @return network element descriptions describing topology change
+     */
+    Collection<Description> details();
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProvider.java b/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProvider.java
new file mode 100644
index 0000000..70264dc
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProvider.java
@@ -0,0 +1,10 @@
+package org.onlab.onos.net.topology;
+
+import org.onlab.onos.net.Provider;
+
+/**
+ * Means for injecting topology information into the core.
+ */
+public interface TopologyProvider extends Provider {
+
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderBroker.java b/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderBroker.java
new file mode 100644
index 0000000..9caa817
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderBroker.java
@@ -0,0 +1,10 @@
+package org.onlab.onos.net.topology;
+
+import org.onlab.onos.net.ProviderBroker;
+
+/**
+ * Abstraction of a network topology provider brokerage.
+ */
+public interface TopologyProviderBroker extends
+        ProviderBroker<TopologyProvider, TopologyProviderService> {
+}
diff --git a/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderService.java b/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderService.java
new file mode 100644
index 0000000..bef83ed
--- /dev/null
+++ b/net/api/src/main/java/org/onlab/onos/net/topology/TopologyProviderService.java
@@ -0,0 +1,20 @@
+package org.onlab.onos.net.topology;
+
+import org.onlab.onos.net.ProviderService;
+
+/**
+ * Means for injecting topology information into the core.
+ */
+public interface TopologyProviderService extends ProviderService {
+
+    // What can be conveyed in a topology that isn't by individual
+    // providers?
+
+    /**
+     * Signals the core that some aspect of the topology has changed.
+     *
+     * @param topoDescription information about topology
+     */
+    void topologyChanged(TopologyDescription topoDescription);
+
+}
diff --git a/net/api/src/main/javadoc/org/onlab/onos/net/package.html b/net/api/src/main/javadoc/org/onlab/onos/net/package.html
new file mode 100644
index 0000000..f03b788
--- /dev/null
+++ b/net/api/src/main/javadoc/org/onlab/onos/net/package.html
@@ -0,0 +1,3 @@
+<body>
+ONOS API definitions.
+</body>
\ No newline at end of file
diff --git a/net/core/pom.xml b/net/core/pom.xml
new file mode 100644
index 0000000..30f6e12
--- /dev/null
+++ b/net/core/pom.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onlab.onos</groupId>
+        <artifactId>onos-net</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>onos-core</artifactId>
+    <packaging>bundle</packaging>
+
+    <description>ONOS network control core subsystems</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.onlab.onos</groupId>
+            <artifactId>onos-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.slf4j</groupId>
+            <artifactId>slf4j-api</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.felix</groupId>
+            <artifactId>org.apache.felix.scr.annotations</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-scr-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/net/core/src/main/java/org/onlab/onos/net/impl/GreetManager.java b/net/core/src/main/java/org/onlab/onos/net/impl/GreetManager.java
new file mode 100644
index 0000000..65a42bc
--- /dev/null
+++ b/net/core/src/main/java/org/onlab/onos/net/impl/GreetManager.java
@@ -0,0 +1,52 @@
+package org.onlab.onos.net.impl;
+
+import com.google.common.collect.ImmutableSet;
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Service;
+import org.onlab.onos.net.GreetService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+
+/**
+ * Trivial implementation of the seed service to demonstrate component and
+ * service annotations.
+ */
+@Component(immediate = true)
+@Service
+public class GreetManager implements GreetService {
+
+    private final Logger log = LoggerFactory.getLogger(getClass());
+
+    private final Set<String> names = new HashSet<>();
+
+    @Override
+    public synchronized String yo(String name) {
+        checkNotNull(name, "Name cannot be null");
+        names.add(name);
+        log.info("Greeted '{}'", name);
+        return "Whazup " + name + "?";
+    }
+
+    @Override
+    public synchronized Iterable<String> names() {
+        return ImmutableSet.copyOf(names);
+    }
+
+    @Activate
+    public void activate() {
+        log.info("SeedManager started");
+    }
+
+    @Deactivate
+    public void deactivate() {
+        log.info("SeedManager stopped");
+    }
+
+}
diff --git a/net/core/src/main/java/org/onlab/onos/net/impl/SomeOtherComponent.java b/net/core/src/main/java/org/onlab/onos/net/impl/SomeOtherComponent.java
new file mode 100644
index 0000000..c53ab04
--- /dev/null
+++ b/net/core/src/main/java/org/onlab/onos/net/impl/SomeOtherComponent.java
@@ -0,0 +1,36 @@
+package org.onlab.onos.net.impl;
+
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.apache.felix.scr.annotations.Deactivate;
+import org.apache.felix.scr.annotations.Reference;
+import org.apache.felix.scr.annotations.ReferenceCardinality;
+import org.onlab.onos.net.GreetService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Example of a component that does not provide any service, but consumes one.
+ */
+@Component(immediate = true)
+public class SomeOtherComponent {
+
+    private final Logger log = LoggerFactory.getLogger(SomeOtherComponent.class);
+
+    @Reference(cardinality = ReferenceCardinality.MANDATORY_UNARY)
+    protected GreetService service;
+    // protected to allow injection for testing;
+    // alternative is to write bindSeedService and unbindSeedService, which is more code
+
+    @Activate
+    public void activate() {
+        log.info("SomeOtherComponent started");
+        service.yo("neighbour");
+    }
+
+    @Deactivate
+    public void deactivate() {
+        log.info("SomeOtherComponent stopped");
+    }
+
+}
diff --git a/net/core/src/main/javadoc/org/onlab/onos/net/impl/package.html b/net/core/src/main/javadoc/org/onlab/onos/net/impl/package.html
new file mode 100644
index 0000000..ba285bd
--- /dev/null
+++ b/net/core/src/main/javadoc/org/onlab/onos/net/impl/package.html
@@ -0,0 +1,3 @@
+<body>
+ONOS core implementations.
+</body>
\ No newline at end of file
diff --git a/net/core/src/test/java/org/onlab/onos/net/impl/GreetManagerTest.java b/net/core/src/test/java/org/onlab/onos/net/impl/GreetManagerTest.java
new file mode 100644
index 0000000..9c05f20
--- /dev/null
+++ b/net/core/src/test/java/org/onlab/onos/net/impl/GreetManagerTest.java
@@ -0,0 +1,31 @@
+package org.onlab.onos.net.impl;
+
+import org.junit.Test;
+import org.onlab.onos.net.GreetService;
+
+import java.util.Iterator;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+
+/**
+ * Example of a component &amp; service implementation unit test.
+ */
+public class GreetManagerTest {
+
+    @Test
+    public void basics() {
+        GreetService service = new GreetManager();
+        assertEquals("incorrect greeting", "Whazup dude?", service.yo("dude"));
+
+        Iterator<String> names = service.names().iterator();
+        assertEquals("incorrect name", "dude", names.next());
+        assertFalse("no more names expected", names.hasNext());
+    }
+
+    @Test(expected = NullPointerException.class)
+    public void nullArg() {
+        new GreetManager().yo(null);
+    }
+
+}
diff --git a/net/pom.xml b/net/pom.xml
new file mode 100644
index 0000000..bd4fa6e
--- /dev/null
+++ b/net/pom.xml
@@ -0,0 +1,40 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onlab.onos</groupId>
+        <artifactId>onos</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>onos-net</artifactId>
+    <packaging>pom</packaging>
+
+    <description>ONOS Core root project</description>
+
+    <modules>
+        <module>api</module>
+        <module>core</module>
+    </modules>
+
+    <dependencies>
+        <dependency>
+            <groupId>com.google.guava</groupId>
+            <artifactId>guava</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+            </plugin>
+        </plugins>
+    </build>
+
+</project>
diff --git a/of-save/ctl/conf/checkstyle/checkstyle_maven.properties b/of-save/ctl/conf/checkstyle/checkstyle_maven.properties
new file mode 100644
index 0000000..4677e08
--- /dev/null
+++ b/of-save/ctl/conf/checkstyle/checkstyle_maven.properties
@@ -0,0 +1,2 @@
+# See: http://rolf-engelhard.de/2011/04/using-the-same-suppression-filter-for-checkstyle-in-eclipse-and-maven/
+config_loc=conf/checkstyle
diff --git a/of-save/ctl/conf/checkstyle/sun_checks.xml b/of-save/ctl/conf/checkstyle/sun_checks.xml
new file mode 100644
index 0000000..b1404c1
--- /dev/null
+++ b/of-save/ctl/conf/checkstyle/sun_checks.xml
@@ -0,0 +1,284 @@
+<?xml version="1.0"?>
+<!DOCTYPE module PUBLIC
+        "-//Puppy Crawl//DTD Check Configuration 1.3//EN"
+        "http://www.puppycrawl.com/dtds/configuration_1_3.dtd">
+
+
+<!--
+
+  Checkstyle configuration that checks the sun coding conventions from:
+
+    - the Java Language Specification at
+      http://java.sun.com/docs/books/jls/second_edition/html/index.html
+
+    - the Sun Code Conventions at http://java.sun.com/docs/codeconv/
+
+    - the Javadoc guidelines at
+      http://java.sun.com/j2se/javadoc/writingdoccomments/index.html
+
+    - the JDK Api documentation http://java.sun.com/j2se/docs/api/index.html
+
+    - some best practices
+
+  Checkstyle is very configurable. Be sure to read the documentation at
+  http://checkstyle.sf.net (or in your downloaded distribution).
+
+  Most Checks are configurable, be sure to consult the documentation.
+
+  To completely disable a check, just comment it out or delete it from the file.
+
+  Finally, it is worth reading the documentation.
+
+-->
+
+
+<!--
+   The default severity setting in checkstyle is 'error', so some
+   of the rules below are configured to change the severity to
+   'warning'.  Over time, these 'warning' settings should be 
+   removed as more of the ONOS source code is modified to
+   follow the recommended rules.
+-->
+
+
+
+<module name="Checker">
+    <module name="SuppressionFilter">
+      <property name="file" value="${config_loc}/suppressions.xml"/>
+    </module>
+    <!--
+        If you set the basedir property below, then all reported file
+        names will be relative to the specified directory. See
+        http://checkstyle.sourceforge.net/5.x/config.html#Checker
+
+        <property name="basedir" value="${basedir}"/>
+    -->
+    <!-- Checks that a package-info.java file exists for each package.     -->
+    <!-- See http://checkstyle.sf.net/config_javadoc.html#JavadocPackage -->
+    <!-- ONOS does not currently supply package level Javadoc information
+         in package-info files -->
+    <!-- <module name="JavadocPackage"/> -->
+
+    <!-- Checks whether files end with a new line.                        -->
+    <!-- See http://checkstyle.sf.net/config_misc.html#NewlineAtEndOfFile -->
+    <module name="NewlineAtEndOfFile"/>
+
+    <!-- Checks that property files contain the same keys.         -->
+    <!-- See http://checkstyle.sf.net/config_misc.html#Translation -->
+    <module name="Translation"/>
+
+    <!-- Checks for Size Violations.                    -->
+    <!-- See http://checkstyle.sf.net/config_sizes.html -->
+    <module name="FileLength">
+        <property name="max" value="2500"/>
+    </module>
+
+    <!-- Checks for whitespace                               -->
+    <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+    <module name="FileTabCharacter"/>
+
+    <!-- Miscellaneous other checks.                   -->
+    <!-- See http://checkstyle.sf.net/config_misc.html -->
+    <module name="RegexpSingleline">
+        <property name="format" value="\s+$"/>
+        <property name="minimum" value="0"/>
+        <property name="maximum" value="0"/>
+        <property name="message" value="Line has trailing spaces."/>
+    </module>
+
+    <!-- Checks for Headers                                -->
+    <!-- See http://checkstyle.sf.net/config_header.html   -->
+    <!-- <module name="Header"> -->
+    <!--   <property name="headerFile" value="${checkstyle.header.file}"/> -->
+    <!--   <property name="fileExtensions" value="java"/> -->
+    <!-- </module> -->
+
+    <module name="SuppressionCommentFilter">
+        <property name="offCommentFormat" value="(CHECKSTYLE\:OFF|Generated by the protocol buffer compiler.)"/>
+        <property name="onCommentFormat" value="CHECKSTYLE:ON"/>
+    </module>
+
+    <module name="SuppressWithNearbyCommentFilter">
+        <property name="commentFormat" value="CHECKSTYLE IGNORE THIS LINE" />
+        <property name="checkFormat" value=".*" />
+        <property name="influenceFormat" value="0" />
+    </module>
+
+    <!-- Example: // CHECKSTYLE IGNORE FinalClass FOR NEXT 1 LINES  -->
+    <module name="SuppressWithNearbyCommentFilter">
+        <property name="commentFormat" value="CHECKSTYLE IGNORE (\w+) FOR NEXT (\d+) LINES"/>
+        <property name="checkFormat" value="$1"/>
+        <property name="influenceFormat" value="$2"/>
+    </module>
+
+    <module name="TreeWalker">
+
+        <module name="FileContentsHolder"/>
+        <!-- Checks for Javadoc comments.                     -->
+        <!-- See http://checkstyle.sf.net/config_javadoc.html -->
+        <module name="JavadocMethod">
+            <property name="severity" value="warning"/>
+            <property name="allowUndeclaredRTE" value="true"/>
+        </module>
+        <module name="JavadocType">
+            <property name="severity" value="warning"/>
+        </module>
+        <module name="JavadocVariable">
+            <!-- Suppress check for private member Javadocs.
+             Possibly revist fixing these. -->
+            <property name="scope" value="public"/>
+            <property name="severity" value="warning"/>
+        </module>
+        <module name="JavadocStyle"/>
+	<!-- @author tag should not be used -->
+        <module name="WriteTag">
+            <property name="tag" value="@author"/>
+            <property name="tagFormat" value="\S"/>
+            <property name="severity" value="ignore"/>
+            <property name="tagSeverity" value="error"/>
+        </module>
+
+
+        <!-- Checks for Naming Conventions.                  -->
+        <!-- See http://checkstyle.sf.net/config_naming.html -->
+        <module name="ConstantName">
+            <!--  ONOS allows the name "log" for static final Loggers -->
+            <property name="format"
+                      value="^log$|^[A-Z][A-Z0-9]*(_[A-Z0-9]+)*$"/>
+        </module>
+        <module name="LocalFinalVariableName"/>
+
+        <module name="LocalVariableName"/>
+
+        <module name="MemberName"/>
+        <module name="MethodName"/>
+        <module name="PackageName"/>
+        <module name="ParameterName"/>
+        <module name="StaticVariableName"/>
+        <module name="TypeName"/>
+
+        <!-- Checks for imports                              -->
+        <!-- See http://checkstyle.sf.net/config_import.html -->
+        <module name="AvoidStarImport">
+          <property name="allowStaticMemberImports" value="true"/>
+        </module>
+        <module name="IllegalImport"/>
+        <!-- defaults to sun.* packages -->
+        <module name="RedundantImport"/>
+        <module name="UnusedImports"/>
+
+
+        <!-- Checks for Size Violations.                    -->
+        <!-- See http://checkstyle.sf.net/config_sizes.html -->
+        <module name="LineLength">
+            <!-- ONOS standard usage is 80 columns, but we allow up
+             to 120 to not break the build. -->
+            <property name="max" value="120"/>
+            <property name="ignorePattern" value="^import"/>
+        </module>
+        <module name="MethodLength">
+            <property name="max" value="400"/>
+        </module>
+
+        <module name="ParameterNumber"/>
+
+        <!-- Checks for whitespace                               -->
+        <!-- See http://checkstyle.sf.net/config_whitespace.html -->
+        <module name="EmptyForIteratorPad"/>
+        <module name="GenericWhitespace"/>
+        <module name="MethodParamPad"/>
+        <module name="NoWhitespaceAfter"/>
+        <module name="NoWhitespaceBefore"/>
+
+        <!-- Disabled for ONOS.  Default rules specify undesired behavior for the '?' operator -->
+        <!-- <module name="OperatorWrap"/> -->
+        <module name="ParenPad"/>
+        <module name="TypecastParenPad"/>
+        <module name="WhitespaceAfter"/>
+        <module name="WhitespaceAround">
+            <property name="allowEmptyConstructors" value="true"/>
+            <property name="allowEmptyMethods" value="true"/>
+        </module>
+
+
+
+        <!-- Modifier Checks                                    -->
+        <!-- See http://checkstyle.sf.net/config_modifiers.html -->
+        <module name="ModifierOrder"/>
+
+        <!--  Disabled for ONOS to allow use of public          -->
+        <!--  modifiers in interfaces.                          -->
+        <!-- <module name="RedundantModifier"/>                 -->
+
+
+        <!-- Checks for blocks. You know, those {}'s         -->
+        <!-- See http://checkstyle.sf.net/config_blocks.html -->
+        <module name="AvoidNestedBlocks">
+            <!-- ONOS alows declarations inside of switch case blocks -->
+            <property name="allowInSwitchCase" value="true"/>
+        </module>
+        <module name="EmptyBlock"/>
+        <module name="LeftCurly"/>
+        <module name="NeedBraces"/>
+        <module name="RightCurly"/>
+
+        <!-- Checks for common coding problems               -->
+        <!-- See http://checkstyle.sf.net/config_coding.html -->
+        <!-- ONOS allows conditional operators -->
+        <!-- <module name="AvoidInlineConditionals"/> -->
+        <module name="EmptyStatement"/>
+        <module name="EqualsHashCode"/>
+
+        <module name="HiddenField">
+            <property name="ignoreSetter" value="true"/>
+            <property name="ignoreConstructorParameter" value="true"/>
+        </module>
+
+        <module name="IllegalInstantiation"/>
+        <module name="InnerAssignment"/>
+
+        <!-- Many violations of this rule present, revist in a
+        subsequent round of cleanups -->
+        <!-- <module name="MagicNumber"/> -->
+        <module name="MissingSwitchDefault"/>
+
+        <module name="RedundantThrows">
+            <property name="allowSubclasses" value="true"/>
+            <property name="allowUnchecked" value="true"/>
+            <property name="suppressLoadErrors" value="true"/>
+        </module>
+
+        <module name="SimplifyBooleanExpression"/>
+        <module name="SimplifyBooleanReturn"/>
+
+        <!-- Checks for class design                         -->
+        <!-- See http://checkstyle.sf.net/config_design.html -->
+        <!-- ONOS produces many warnings of this type.
+        Fixing all of these is outside the scope of the current cleanup. -->
+        <!-- <module name="DesignForExtension"/> -->
+        <module name="FinalClass"/>
+
+        <module name="HideUtilityClassConstructor"/>
+
+        <module name="InterfaceIsType"/>
+
+        <module name="VisibilityModifier">
+            <property name="severity" value="warning"/>
+        </module>
+
+
+
+        <!-- Miscellaneous other checks.                   -->
+        <!-- See http://checkstyle.sf.net/config_misc.html -->
+        <module name="ArrayTypeStyle"/>
+
+        <!--  Many violations of this rule currently, too many to fix
+        in the current cleanup. -->
+        <!-- <module name="FinalParameters"/> -->
+        <!-- ONOS allows TODO markers in checked in source code -->
+        <!-- <module name="TodoComment"/> -->
+        <module name="UpperEll"/>
+
+      </module>
+
+    </module>
diff --git a/of-save/ctl/conf/checkstyle/suppressions.xml b/of-save/ctl/conf/checkstyle/suppressions.xml
new file mode 100644
index 0000000..41dbe2d
--- /dev/null
+++ b/of-save/ctl/conf/checkstyle/suppressions.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE suppressions PUBLIC "-//Puppy Crawl//DTD Suppressions 1.1//EN" "http://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
+
+<suppressions>
+     <!--
+        Note: Exclusion definition exists in multiple places.
+        - In file ${findbugs.excludeFilterFile} defined at top of pom.xml
+        - In file conf/checkstyle/onos_suppressions.xml (this file)
+        - maven-pmd-plugin configuration in pom.xml
+          (under build and reporting)
+     -->
+
+    <suppress files=".*" checks="FinalParametersCheck"/>
+    <suppress files=".*" checks="MagicNumbersCheck"/>
+    <suppress files=".*" checks="DesignForExtensionCheck"/>
+    <suppress files=".*" checks="TodoCommentCheck"/>
+    <suppress files=".*" checks="AvoidInlineConditionalsCheck"/>
+    <suppress files=".*" checks="OperatorWrapCheck"/>
+</suppressions>
+
diff --git a/of-save/ctl/conf/findbugs/exclude.xml b/of-save/ctl/conf/findbugs/exclude.xml
new file mode 100644
index 0000000..3a49335
--- /dev/null
+++ b/of-save/ctl/conf/findbugs/exclude.xml
@@ -0,0 +1,18 @@
+<FindBugsFilter>
+     <!--
+        Note: Exclusion definition exists in multiple places.
+        - In file ${findbugs.excludeFilterFile} defined at top of pom.xml (this file)
+        - In file conf/checkstyle/onos_suppressions.xml
+        - maven-pmd-plugin configuration in pom.xml
+          (under build and reporting)
+     -->
+     <Match>
+       <Class name="~net\.onrc\.onos\.core\.datastore\.serializers\..*" />
+     </Match>
+     <Match>
+       <Class name="~.*edu\.stanford\..*"/>
+     </Match>
+     <Match>
+       <Class name="~.org\.projectfloodlight\..*"/>
+     </Match>
+</FindBugsFilter>
diff --git a/of-save/ctl/old-pom.xml b/of-save/ctl/old-pom.xml
new file mode 100644
index 0000000..fcdc921
--- /dev/null
+++ b/of-save/ctl/old-pom.xml
@@ -0,0 +1,624 @@
+<?xml version="1.0"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <prerequisites>
+    <maven>3.0.4</maven>
+  </prerequisites>
+  <groupId>net.onrc.onos.of.ctl</groupId>
+  <artifactId>io</artifactId>
+  <version>0.0.1</version>
+  <packaging>bundle</packaging>
+  <name>of-ctl</name>
+  <url>http://onlab.us/</url>
+  <licenses>
+    <license>
+      <name>Apache License, Version 2.0</name>
+      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
+    </license>
+  </licenses>
+  <repositories>
+    <repository>
+      <id>central</id>
+      <name>Maven Central repository</name>
+      <url>https://repo1.maven.org/maven2</url>
+    </repository>
+    <repository>
+      <id>maven-restlet</id>
+      <name>Public online Restlet repository</name>
+      <url>http://maven.restlet.org</url>
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+    </repository>
+    <repository>
+      <id>sonatype-oss-snapshot</id>
+      <name>Sonatype OSS snapshot repository</name>
+      <url>https://oss.sonatype.org/content/repositories/snapshots</url>
+      <releases>
+        <enabled>false</enabled>
+      </releases>
+    </repository>
+  </repositories>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <powermock.version>1.5.5</powermock.version>
+    <restlet.version>2.1.4</restlet.version>
+    <cobertura-maven-plugin.version>2.6</cobertura-maven-plugin.version>
+    <!-- Following 2 findbugs version needs to be updated in sync to match the
+         findbugs version used in findbugs-plugin -->
+    <findbugs.version>3.0.0</findbugs.version>
+    <findbugs-plugin.version>3.0.0</findbugs-plugin.version>
+    <findbugs.effort>Max</findbugs.effort>
+    <findbugs.excludeFilterFile>${project.basedir}/conf/findbugs/exclude.xml</findbugs.excludeFilterFile>
+    <checkstyle-plugin.version>2.12</checkstyle-plugin.version>
+    <!-- To publish javadoc to github,
+     uncomment com.github.github site-maven-plugin and
+     see https://github.com/OPENNETWORKINGLAB/ONOS/pull/425
+    <github.global.server>github</github.global.server>
+     -->
+    <metrics.version>3.0.2</metrics.version>
+    <maven.surefire.plugin.version>2.16</maven.surefire.plugin.version>
+  </properties>
+  <build>
+    <plugins>
+    <plugin>
+	<groupId>org.apache.felix</groupId>
+	<artifactId>maven-scr-plugin</artifactId>
+	<version>1.15.0</version>
+	<executions>
+		<execution>
+			<id>generate-scr-srcdescriptor</id>
+			<goals>
+				<goal>scr</goal>
+			</goals>
+		</execution>
+	</executions>
+	<configuration>
+		<supportedProjectTypes>
+			<supportedProjectType>bundle</supportedProjectType>
+			<supportedProjectType>war</supportedProjectType>
+		</supportedProjectTypes>
+	</configuration>
+</plugin> 
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <version>2.3.6</version>
+        <extensions>true</extensions>
+        <configuration>
+            <instructions>
+             <Bundle-SymbolicName>${project.groupId}.${project.artifactId}</Bundle-SymbolicName>
+            </instructions>
+        </configuration>
+      </plugin>
+      <!-- Note: the checkstyle configuration is also in the reporting section -->
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <version>${checkstyle-plugin.version}</version>
+        <configuration>
+          <configLocation>${project.basedir}/conf/checkstyle/sun_checks.xml</configLocation>
+          <propertiesLocation>${project.basedir}/conf/checkstyle/checkstyle_maven.properties</propertiesLocation>
+          <failsOnError>false</failsOnError>
+          <logViolationsToConsole>true</logViolationsToConsole>
+          <includeTestSourceDirectory>true</includeTestSourceDirectory>
+        </configuration>
+        <executions>
+          <execution>
+            <id>validate-checkstyle</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin> 
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-install-plugin</artifactId>
+        <version>2.5.1</version>
+        <executions>
+        </executions>
+      </plugin>
+      <!-- guice maven plugin for dependency injection inside maven -->
+      <plugin>
+        <groupId>org.apache.camel</groupId>
+        <artifactId>guice-maven-plugin</artifactId>
+        <version>2.11.0</version>
+      </plugin>
+      <plugin>
+        <artifactId>maven-clean-plugin</artifactId>
+        <version>2.5</version>
+      </plugin>
+      <plugin>
+        <artifactId>maven-deploy-plugin</artifactId>
+        <version>2.8</version>
+      </plugin>
+      <plugin>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>2.4</version>
+      </plugin>
+      <plugin>
+        <artifactId>maven-resources-plugin</artifactId>
+        <version>2.6</version>
+      </plugin>
+      <plugin>
+        <artifactId>maven-site-plugin</artifactId>
+        <version>3.3</version>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.1</version>
+        <configuration>
+          <source>1.7</source>
+          <target>1.7</target>
+          <encoding>UTF-8</encoding>
+          <showDeprecation>true</showDeprecation>
+          <showWarnings>true</showWarnings>
+          <compilerArgs>
+            <arg>-Xlint:all</arg>
+            <arg>-Xlint:-serial</arg>
+            <arg>-Werror</arg>
+          </compilerArgs>
+        </configuration>
+        <executions>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>${maven.surefire.plugin.version}</version>
+        <configuration>
+          <!-- FIXME -XX:-UseSplitVerifier added as workaround for JDK 1.7.0u65 + PowerMock issue
+                 https://issues.jboss.org/browse/JASSIST-228 -->
+          <argLine>-XX:MaxPermSize=256m -XX:-UseSplitVerifier</argLine>
+          <redirectTestOutputToFile>false</redirectTestOutputToFile>
+        </configuration>
+      </plugin>
+      <!-- TODO exec:java no longer used remove at some point? -->
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>exec-maven-plugin</artifactId>
+        <version>1.2.1</version>
+        <configuration>
+          <mainClass>net.onrc.onos.core.main.Main</mainClass>
+        </configuration>
+        <executions>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <version>2.9.1</version>
+        <configuration>
+          <charset>UTF-8</charset>
+          <locale>en</locale>
+          <author>false</author>
+        </configuration>
+      </plugin>
+      <plugin>
+        <artifactId>maven-assembly-plugin</artifactId>
+        <version>2.4</version>
+        <configuration>
+          <descriptorRefs>
+            <descriptorRef>jar-with-dependencies</descriptorRef>
+          </descriptorRefs>
+        </configuration>
+      </plugin>
+      <plugin>
+        <!-- Using groovy script to set maven property ${hostname}.
+             This is a workaround to get hostname as a property inside pom file,
+             which current Maven does not provide. -->
+        <groupId>org.codehaus.gmaven</groupId>
+        <artifactId>groovy-maven-plugin</artifactId>
+        <version>2.0</version>
+        <executions>
+          <execution>
+            <phase>initialize</phase>
+            <goals>
+              <goal>execute</goal>
+            </goals>
+            <configuration>
+              <source>
+                project.properties["hostname"] = InetAddress.getLocalHost().getHostName()
+              </source>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <version>2.8</version>
+        <executions>
+          <execution>
+            <id>build-classpath</id>
+            <phase>compile</phase>
+            <goals>
+              <goal>build-classpath</goal>
+            </goals>
+            <configuration>
+              <outputFile>${project.basedir}/.javacp.${hostname}</outputFile>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>cobertura-maven-plugin</artifactId>
+        <version>${cobertura-maven-plugin.version}</version>
+        <configuration>
+          <instrumentation>
+            <ignores>
+              <ignore>org.slf4j.*</ignore>
+            </ignores>
+          </instrumentation>
+          <quiet>true</quiet>
+        </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>clean</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <!-- Note: the findbugs configuration is also in the reporting section -->
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>findbugs-maven-plugin</artifactId>
+        <version>${findbugs-plugin.version}</version>
+        <configuration>
+          <effort>${findbugs.effort}</effort>
+          <excludeFilterFile>${findbugs.excludeFilterFile}</excludeFilterFile>
+        </configuration>
+        <executions>
+          <execution>
+            <id>validate-findbugs</id>
+            <phase>verify</phase>
+            <goals>
+              <goal>check</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin> 
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-pmd-plugin</artifactId>
+        <version>3.1</version>
+        <configuration>
+          <!--
+            Note: Exclusion definition exists in multiple places.
+            - In file ${findbugs.excludeFilterFile} defined at top of pom.xml
+            - In file conf/checkstyle/onos_suppressions.xml
+            - maven-pmd-plugin configuration in pom.xml
+              (under build and reporting)
+          -->
+          <rulesets>
+            <ruleset>${basedir}/conf/pmd/ruleset.xml</ruleset>
+          </rulesets>
+        </configuration>
+        <executions>
+          <execution>
+            <id>validate-pmd</id>
+            <phase>verify</phase>
+            <goals>
+              <!--  Uncomment this goal to make the build fail on pmd errors -->
+              <!--<goal>check</goal>-->
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+    <pluginManagement>
+      <plugins>
+        <!--This plugin's configuration is used to store Eclipse m2e settings 
+          only. It has no influence on the Maven build itself. -->
+        <plugin>
+          <groupId>org.eclipse.m2e</groupId>
+          <artifactId>lifecycle-mapping</artifactId>
+          <version>1.0.0</version>
+          <configuration>
+            <lifecycleMappingMetadata>
+              <pluginExecutions>
+                <pluginExecution>
+                  <pluginExecutionFilter>
+                    <groupId>
+                      org.apache.maven.plugins
+                    </groupId>
+                    <artifactId>
+                      maven-dependency-plugin
+                    </artifactId>
+                    <versionRange>[2.8,)</versionRange>
+                    <goals>
+                      <goal>build-classpath</goal>
+                    </goals>
+                  </pluginExecutionFilter>
+                  <action>
+                    <ignore></ignore>
+                  </action>
+                </pluginExecution>
+                <pluginExecution>
+                  <pluginExecutionFilter>
+                    <groupId>org.codehaus.gmaven</groupId>
+                    <artifactId>groovy-maven-plugin</artifactId>
+                    <versionRange>[2.0,)</versionRange>
+                    <goals>
+                      <goal>execute</goal>
+                    </goals>
+                  </pluginExecutionFilter>
+                  <action>
+                    <ignore></ignore>
+                  </action>
+                </pluginExecution>
+              </pluginExecutions>
+            </lifecycleMappingMetadata>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+  <!-- for getting visualization reporting -->
+  <reporting>
+    <excludeDefaults>true</excludeDefaults>
+    <outputDirectory>${project.build.directory}/site</outputDirectory>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-project-info-reports-plugin</artifactId>
+        <version>2.7</version>
+        <configuration>
+          <dependencyDetailsEnabled>false</dependencyDetailsEnabled>
+          <dependencyLocationsEnabled>false</dependencyLocationsEnabled>
+        </configuration>
+        <reportSets>
+          <reportSet>
+            <reports>
+              <report>dependencies</report>
+              <report>scm</report>
+            </reports>
+          </reportSet>
+        </reportSets>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <version>2.9.1</version>
+        <configuration>
+          <charset>UTF-8</charset>
+          <locale>en</locale>
+          <author>false</author>
+          <excludePackageNames>net.floodlightcontroller.*:net.onrc.onos.core.datastore.serializers</excludePackageNames>
+        </configuration>
+      </plugin>
+      <plugin>
+        <!-- Note: the checkstyle configuration is also in the build section -->
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-checkstyle-plugin</artifactId>
+        <version>${checkstyle-plugin.version}</version>
+        <configuration>
+          <configLocation>conf/checkstyle/sun_checks.xml</configLocation>
+          <!--
+            Note: Exclusion definition exists in multiple places.
+            - In file ${findbugs.excludeFilterFile} defined at top of pom.xml
+            - maven-checkstyle-plugin configuration in pom.xml
+            - maven-pmd-plugin configuration in pom.xml
+              (under build and reporting)
+          -->
+          <propertiesLocation>${basedir}/conf/checkstyle/checkstyle_maven.properties</propertiesLocation>
+          <includeTestSourceDirectory>true</includeTestSourceDirectory>
+        </configuration>
+        <reportSets>
+          <reportSet>
+            <reports>
+              <report>checkstyle</report>
+            </reports>
+          </reportSet>
+        </reportSets>
+      </plugin>
+      <!-- Note: the findbugs configuration is also in the build section -->
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>findbugs-maven-plugin</artifactId>
+        <version>${findbugs-plugin.version}</version>
+        <configuration>
+          <effort>${findbugs.effort}</effort>
+          <excludeFilterFile>${findbugs.excludeFilterFile}</excludeFilterFile>
+          <reportPlugins>
+            <plugin>
+              <groupId>org.codehaus.mojo</groupId>
+              <artifactId>findbugs-maven-plugin</artifactId>
+            </plugin>
+          </reportPlugins>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-pmd-plugin</artifactId>
+        <version>3.1</version>
+        <configuration>
+          <!--
+            Note: Exclusion definition exists in multiple places.
+            - In file ${findbugs.excludeFilterFile} defined at top of pom.xml
+            - In file conf/checkstyle/onos_suppressions.xml
+            - maven-pmd-plugin configuration in pom.xml
+              (under build and reporting)
+          -->
+          <excludes>
+            <exclude>**/datastore/serializers/**</exclude>
+            <exclude>**/edu/stanford/**</exclude>
+            <exclude>**/net/floodlightcontroller/**</exclude>
+          </excludes>
+          <rulesets>
+            <ruleset>${basedir}/conf/pmd/onos_ruleset.xml</ruleset>
+          </rulesets>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jxr-plugin</artifactId>
+        <version>2.4</version>
+    </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>cobertura-maven-plugin</artifactId>
+        <version>${cobertura-maven-plugin.version}</version>
+      </plugin>
+    </plugins>
+  </reporting>
+  <dependencies>
+    <!-- ONOS's direct dependencies -->
+	<dependency>
+		<groupId>org.apache.felix</groupId>
+		<artifactId>org.apache.felix.scr.annotations</artifactId>
+		<version>1.9.6</version>
+	</dependency>
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
+      <version>1.1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-core</artifactId>
+      <version>1.1.2</version>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <version>1.7.5</version>
+    </dependency>
+    <dependency>
+      <!-- findbugs suppression annotation and @GuardedBy, etc. -->
+      <groupId>com.google.code.findbugs</groupId>
+      <artifactId>annotations</artifactId>
+      <version>${findbugs.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.projectfloodlight</groupId>
+      <artifactId>openflowj</artifactId>
+      <version>0.3.6-SNAPSHOT</version>
+    </dependency>
+    <!-- Floodlight's dependencies -->
+    <dependency>
+      <!-- dependency to old version of netty? -->
+      <groupId>io.netty</groupId>
+      <artifactId>netty</artifactId>
+      <version>3.9.2.Final</version>
+    </dependency>
+    <!-- Dependency for libraries used for testing -->
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.11</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.easymock</groupId>
+      <artifactId>easymock</artifactId>
+      <version>3.2</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.powermock</groupId>
+      <artifactId>powermock-module-junit4</artifactId>
+      <version>${powermock.version}</version>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.powermock</groupId>
+      <artifactId>powermock-api-easymock</artifactId>
+      <version>${powermock.version}</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+  <profiles>
+    <!-- Jenkins by default defines a property BUILD_NUMBER which is used to 
+      enable the profile. -->
+    <profile>
+      <id>jenkins</id>
+      <activation>
+        <property>
+          <name>env.BUILD_NUMBER</name>
+        </property>
+      </activation>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.codehaus.mojo</groupId>
+            <artifactId>cobertura-maven-plugin</artifactId>
+            <version>${cobertura-maven-plugin.version}</version>
+            <configuration>
+              <formats>
+                <format>xml</format>
+              </formats>
+              <quiet>true</quiet>
+            </configuration>
+            <executions>
+              <execution>
+                <phase>package</phase>
+                <goals>
+                  <goal>cobertura</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+    <profile>
+      <id>all-tests</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-surefire-plugin</artifactId>
+            <version>${maven.surefire.plugin.version}</version>
+            <configuration combine.self="merge">
+              <excludedGroups></excludedGroups>
+            </configuration>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+    <profile>
+      <id>error-prone</id>
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-compiler-plugin</artifactId>
+            <version>3.1</version>
+            <configuration>
+              <compilerArgs combine.children="append">
+                <!-- FIXME -Xlint:-path required when using findbugs + error-prone -->
+                <arg>-Xlint:-path</arg>
+              </compilerArgs>
+              <!-- Turn on error-prone -->
+              <compilerId>javac-with-errorprone</compilerId>
+              <forceJavacCompilerUse>true</forceJavacCompilerUse>
+            </configuration>
+            <dependencies combine.children="append">
+              <dependency>
+                <groupId>com.google.errorprone</groupId>
+                <artifactId>error_prone_core</artifactId>
+                <version>1.1.2</version>
+              </dependency>
+              <dependency>
+                <groupId>org.codehaus.plexus</groupId>
+                <artifactId>plexus-compiler-javac</artifactId>
+                <version>2.3</version>
+              </dependency>
+              <dependency>
+                <groupId>org.codehaus.plexus</groupId>
+                <artifactId>plexus-compiler-javac-errorprone</artifactId>
+                <version>2.3</version>
+              </dependency>
+            </dependencies>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+</project>
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/IOFSwitch.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/IOFSwitch.java
new file mode 100644
index 0000000..8015f3f
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/IOFSwitch.java
@@ -0,0 +1,582 @@
+/**
+ *    Copyright 2011, Big Switch Networks, Inc.
+ *    Originally created by David Erickson, Stanford University
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License"); you may
+ *    not use this file except in compliance with the License. You may obtain
+ *    a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ *    License for the specific language governing permissions and limitations
+ *    under the License.
+ **/
+
+package net.onrc.onos.of.ctl;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.Future;
+
+import net.onrc.onos.of.ctl.debugcounter.IDebugCounterService;
+import net.onrc.onos.of.ctl.debugcounter.IDebugCounterService.CounterException;
+import net.onrc.onos.of.ctl.util.OrderedCollection;
+
+import org.jboss.netty.channel.Channel;
+import org.projectfloodlight.openflow.protocol.OFActionType;
+import org.projectfloodlight.openflow.protocol.OFCapabilities;
+import org.projectfloodlight.openflow.protocol.OFDescStatsReply;
+import org.projectfloodlight.openflow.protocol.OFFeaturesReply;
+import org.projectfloodlight.openflow.protocol.OFMessage;
+import org.projectfloodlight.openflow.protocol.OFPortDesc;
+import org.projectfloodlight.openflow.protocol.OFPortDescStatsReply;
+import org.projectfloodlight.openflow.protocol.OFPortStatus;
+import org.projectfloodlight.openflow.protocol.OFStatsReply;
+import org.projectfloodlight.openflow.protocol.OFStatsRequest;
+import org.projectfloodlight.openflow.protocol.OFVersion;
+import org.projectfloodlight.openflow.types.U64;
+
+
+public interface IOFSwitch {
+
+    /**
+     * OF1.3 switches should support role-request messages as in the 1.3 spec.
+     * OF1.0 switches may or may not support the Nicira role request extensions.
+     * To indicate the support, this property should be set by the associated
+     * OF1.0 switch driver in the net.onrc.onos.core.drivermanager package.
+     * The property will be ignored for OF1.3 switches.
+     */
+    public static final String SWITCH_SUPPORTS_NX_ROLE = "supportsNxRole";
+
+
+    //************************
+    // Channel related
+    //************************
+
+    /**
+     * Disconnects the switch by closing the TCP connection. Results in a call
+     * to the channel handler's channelDisconnected method for cleanup
+     * @throws IOException
+     */
+    public void disconnectSwitch();
+
+    /**
+     * Writes to the OFMessage to the output stream.
+     *
+     * @param m
+     * @param bc
+     * @throws IOException
+     */
+    public void write(OFMessage m) throws IOException;
+
+    /**
+     * Writes the list of messages to the output stream.
+     *
+     * @param msglist
+     * @param bc
+     * @throws IOException
+     */
+    public void write(List<OFMessage> msglist) throws IOException;
+
+    /**
+     * Gets the date the switch connected to this controller.
+     *
+     * @return the date
+     */
+    public Date getConnectedSince();
+
+    /**
+     * Gets the next available transaction id.
+     *
+     * @return the next transaction ID
+     */
+    public int getNextTransactionId();
+
+    /**
+     * Checks if the switch is still connected.
+     * Only call while holding processMessageLock
+     *
+     * @return whether the switch is still disconnected
+     */
+    public boolean isConnected();
+
+    /**
+     * Sets whether the switch is connected.
+     * Only call while holding modifySwitchLock
+     *
+     * @param connected whether the switch is connected
+     */
+    public void setConnected(boolean connected);
+
+    /**
+     * Flushes all flows queued for this switch in the current thread.
+     * NOTE: The contract is limited to the current thread
+     */
+    public void flush();
+
+    /**
+     * Sets the Netty Channel this switch instance is associated with.
+     * <p>
+     * Called immediately after instantiation
+     *
+     * @param channel the channel
+     */
+    public void setChannel(Channel channel);
+
+    //************************
+    // Switch features related
+    //************************
+
+    /**
+     * Gets the datapathId of the switch.
+     *
+     * @return the switch buffers
+     */
+    public long getId();
+
+    /**
+     * Gets a string version of the ID for this switch.
+     *
+     * @return string version of the ID
+     */
+    public String getStringId();
+
+    /**
+     * Gets the number of buffers.
+     *
+     * @return the number of buffers
+     */
+    public int getNumBuffers();
+
+    public Set<OFCapabilities> getCapabilities();
+
+    public byte getNumTables();
+
+    /**
+     * Returns an OFDescStatsReply message object. Use the methods contained
+     * to retrieve switch descriptions for Manufacturer, Hw/Sw version etc.
+     */
+    public OFDescStatsReply getSwitchDescription();
+
+    /**
+     * Cancel features reply with a specific transaction ID.
+     * @param transactionId the transaction ID
+     */
+    public void cancelFeaturesReply(int transactionId);
+
+    /**
+     * Gets the OFActionType set.
+     * <p>
+     * getActions has relevance only for an OpenFlow 1.0 switch.
+     * For OF1.3, each table can support different actions
+     *
+     * @return the action set
+     */
+    public Set<OFActionType> getActions();
+
+    public void setOFVersion(OFVersion ofv);
+
+    public OFVersion getOFVersion();
+
+
+    //************************
+    //  Switch port related
+    //************************
+
+    /**
+     * the type of change that happened to an open flow port.
+     */
+    public enum PortChangeType {
+        /** Either a new port has been added by the switch, or we are
+         * adding a port we just deleted (via a prior notification) due to
+         * a change in the portNumber-portName mapping.
+         */
+        ADD,
+        /** some other feature of the port has changed (eg. speed)*/
+        OTHER_UPDATE,
+        /** Either a port has been deleted by the switch, or we are deleting
+         * a port whose portNumber-portName mapping has changed. Note that in
+         * the latter case, a subsequent notification will be sent out to add a
+         * port with the new portNumber-portName mapping.
+         */
+        DELETE,
+        /** Port is up (i.e. enabled). Presumably an earlier notification had
+         * indicated that it was down. To be UP implies that the port is
+         * administratively considered UP (see ofp_port_config) AND the port
+         * link is up AND the port is no longer blocked (see ofp_port_state).
+         */
+        UP,
+        /** Port is down (i.e. disabled). Presumably an earlier notification had
+         * indicated that it was up, or the port was always up.
+         * To be DOWN implies that the port has been either
+         * administratively brought down (see ofp_port_config) OR the port
+         * link is down OR the port is blocked (see ofp_port_state).
+         */
+        DOWN,
+    }
+
+    /**
+     * Describes a change of an open flow port.
+     */
+    public static class PortChangeEvent {
+        public final OFPortDesc port;
+        public final PortChangeType type;
+        /**
+         * @param port
+         * @param type
+         */
+        public PortChangeEvent(OFPortDesc port,
+                               PortChangeType type) {
+            this.port = port;
+            this.type = type;
+        }
+        /* (non-Javadoc)
+         * @see java.lang.Object#hashCode()
+         */
+        @Override
+        public int hashCode() {
+            final int prime = 31;
+            int result = 1;
+            result = prime * result + ((port == null) ? 0 : port.hashCode());
+            result = prime * result + ((type == null) ? 0 : type.hashCode());
+            return result;
+        }
+        /* (non-Javadoc)
+         * @see java.lang.Object#equals(java.lang.Object)
+         */
+        @Override
+        public boolean equals(Object obj) {
+            if (this == obj) {
+                return true;
+            }
+            if (obj == null) {
+                return false;
+            }
+            if (getClass() != obj.getClass()) {
+                return false;
+            }
+            PortChangeEvent other = (PortChangeEvent) obj;
+            if (port == null) {
+                if (other.port != null) {
+                    return false;
+                }
+            } else if (!port.equals(other.port)) {
+                return false;
+            }
+            if (type != other.type) {
+                return false;
+            }
+            return true;
+        }
+        /* (non-Javadoc)
+         * @see java.lang.Object#toString()
+         */
+        @Override
+        public String toString() {
+            return "[" + type + " " + port.toString() + "]";
+        }
+    }
+
+
+    /**
+     * Get list of all enabled ports. This will typically be different from
+     * the list of ports in the OFFeaturesReply, since that one is a static
+     * snapshot of the ports at the time the switch connected to the controller
+     * whereas this port list also reflects the port status messages that have
+     * been received.
+     *
+     * @return Unmodifiable list of ports not backed by the underlying collection
+     */
+    public Collection<OFPortDesc> getEnabledPorts();
+
+    /**
+     * Get list of the port numbers of all enabled ports. This will typically
+     * be different from the list of ports in the OFFeaturesReply, since that
+     * one is a static snapshot of the ports at the time the switch connected
+     * to the controller whereas this port list also reflects the port status
+     * messages that have been received.
+     *
+     * @return Unmodifiable list of ports not backed by the underlying collection
+     */
+    public Collection<Integer> getEnabledPortNumbers();
+
+    /**
+     * Retrieve the port object by the port number. The port object
+     * is the one that reflects the port status updates that have been
+     * received, not the one from the features reply.
+     *
+     * @param portNumber
+     * @return port object
+     */
+    public OFPortDesc getPort(int portNumber);
+
+    /**
+     * Retrieve the port object by the port name. The port object
+     * is the one that reflects the port status updates that have been
+     * received, not the one from the features reply.
+     *
+     * @param portName
+     * @return port object
+     */
+    public OFPortDesc getPort(String portName);
+
+    /**
+     * Add or modify a switch port. This is called by the core controller
+     * code in response to a OFPortStatus message.
+     *
+     * OFPPR_MODIFY and OFPPR_ADD will be treated as equivalent. The OpenFlow
+     * spec is not clear on whether portNames are portNumbers are considered
+     * authoritative identifiers. We treat portNames <-> portNumber mappings
+     * as fixed. If they change, we delete all previous conflicting ports and
+     * add all new ports.
+     *
+     * @param ps the port status message
+     * @return the ordered Collection of changes "applied" to the old ports
+     * of the switch according to the PortStatus message. A single PortStatus
+     * message can result in multiple changes.
+     * If portName <-> portNumber mappings have
+     * changed, the iteration order ensures that delete events for old
+     * conflicting appear before before events adding new ports
+     */
+    public OrderedCollection<PortChangeEvent> processOFPortStatus(OFPortStatus ps);
+
+    /**
+     * Get list of all ports. This will typically be different from
+     * the list of ports in the OFFeaturesReply, since that one is a static
+     * snapshot of the ports at the time the switch connected to the controller
+     * whereas this port list also reflects the port status messages that have
+     * been received.
+     *
+     * @return Unmodifiable list of ports
+     */
+    public Collection<OFPortDesc> getPorts();
+
+    /**
+     * @param portName
+     * @return Whether a port is enabled per latest port status message
+     * (not configured down nor link down nor in spanning tree blocking state)
+     */
+    public boolean portEnabled(int portName);
+
+    /**
+     * @param portNumber
+     * @return Whether a port is enabled per latest port status message
+     * (not configured down nor link down nor in spanning tree blocking state)
+     */
+    public boolean portEnabled(String portName);
+
+    /**
+     * Compute the changes that would be required to replace the old ports
+     * of this switch with the new ports.
+     * @param ports new ports to set
+     * @return the ordered collection of changes "applied" to the old ports
+     * of the switch in order to set them to the new set.
+     * If portName <-> portNumber mappings have
+     * changed, the iteration order ensures that delete events for old
+     * conflicting appear before before events adding new ports
+     */
+    public OrderedCollection<PortChangeEvent>
+            comparePorts(Collection<OFPortDesc> ports);
+
+    /**
+     * Replace the ports of this switch with the given ports.
+     * @param ports new ports to set
+     * @return the ordered collection of changes "applied" to the old ports
+     * of the switch in order to set them to the new set.
+     * If portName <-> portNumber mappings have
+     * changed, the iteration order ensures that delete events for old
+     * conflicting appear before before events adding new ports
+     */
+    public OrderedCollection<PortChangeEvent>
+            setPorts(Collection<OFPortDesc> ports);
+
+    //*******************************************
+    //  IOFSwitch object attributes
+    //************************
+
+    /**
+     * Gets attributes of this switch.
+     *
+     * @return attributes of the switch
+     */
+    public Map<Object, Object> getAttributes();
+
+    /**
+     * Checks if a specific switch property exists for this switch.
+     *
+     * @param name name of property
+     * @return value for name
+     */
+    boolean hasAttribute(String name);
+
+    /**
+     * Gets properties for switch specific behavior.
+     *
+     * @param name name of property
+     * @return 'value' for 'name', or null if no entry for 'name' exists
+     */
+    Object getAttribute(String name);
+
+    /**
+     * Sets properties for switch specific behavior.
+     *
+     * @param name  name of property
+     * @param value value for name
+     */
+    void setAttribute(String name, Object value);
+
+    /**
+     * Removes properties for switch specific behavior.
+     *
+     * @param name name of property
+     * @return current value for name or null (if not present)
+     */
+    Object removeAttribute(String name);
+
+    //************************
+    //  Switch statistics
+    //************************
+
+    /**
+     * Delivers the statistics future reply.
+     *
+     * @param reply the reply to deliver
+     */
+    public void deliverStatisticsReply(OFMessage reply);
+
+    /**
+     * Cancels the statistics reply with the given transaction ID.
+     *
+     * @param transactionId the transaction ID
+     */
+    public void cancelStatisticsReply(int transactionId);
+
+    /**
+     * Cancels all statistics replies.
+     */
+    public void cancelAllStatisticsReplies();
+
+    /**
+     * Gets a Future object that can be used to retrieve the asynchronous.
+     * OFStatisticsReply when it is available.
+     *
+     * @param request statistics request
+     * @return Future object wrapping OFStatisticsReply
+     * @throws IOException
+     */
+    public Future<List<OFStatsReply>> getStatistics(OFStatsRequest<?> request)
+            throws IOException;
+
+    //************************
+    //  Switch other utilities
+    //************************
+
+    /**
+     * Clears all flowmods on this switch.
+     */
+    public void clearAllFlowMods();
+
+    /**
+     * Gets the current role of this controller for this IOFSwitch.
+     */
+    public Role getRole();
+
+    /**
+     * Sets this controller's Role for this IOFSwitch to role.
+     *
+     * @param role
+     */
+    public void setRole(Role role);
+
+    /**
+     * Gets the next generation ID.
+     * <p>
+     * Note: relevant for role request messages in OF1.3
+     *
+     * @return next generation ID
+     */
+    public U64 getNextGenerationId();
+
+
+    /**
+     * Set debug counter service for per-switch counters.
+     * Called immediately after instantiation.
+     * @param debugCounters
+     * @throws CounterException
+     */
+    public void setDebugCounterService(IDebugCounterService debugCounter)
+            throws CounterException;
+
+    /**
+     * Start this switch driver's sub handshake. This might be a no-op but
+     * this method must be called at least once for the switch to be become
+     * ready.
+     * This method must only be called from the I/O thread
+     * @throws IOException
+     * @throws SwitchDriverSubHandshakeAlreadyStarted if the sub-handshake has
+     * already been started
+     */
+    public void startDriverHandshake() throws IOException;
+
+    /**
+     * Check if the sub-handshake for this switch driver has been completed.
+     * This method can only be called after startDriverHandshake()
+     *
+     * This methods must only be called from the I/O thread
+     * @return true if the sub-handshake has been completed. False otherwise
+     * @throws SwitchDriverSubHandshakeNotStarted if startDriverHandshake() has
+     * not been called yet.
+     */
+    public boolean isDriverHandshakeComplete();
+
+    /**
+     * Pass the given OFMessage to the driver as part of this driver's
+     * sub-handshake. Must not be called after the handshake has been completed
+     * This methods must only be called from the I/O thread
+     * @param m The message that the driver should process
+     * @throws SwitchDriverSubHandshakeCompleted if isDriverHandshake() returns
+     * false before this method call
+     * @throws SwitchDriverSubHandshakeNotStarted if startDriverHandshake() has
+     * not been called yet.
+     */
+    public void processDriverHandshakeMessage(OFMessage m);
+
+    /**
+     * Set the flow table full flag in the switch.
+     * XXX S Rethink this for multiple tables
+     */
+    public void setTableFull(boolean isFull);
+
+    /**
+     * Save the features reply for this switch.
+     *
+     * @param featuresReply
+     */
+    public void setFeaturesReply(OFFeaturesReply featuresReply);
+
+    /**
+     * Save the portset for this switch.
+     *
+     * @param portDescReply
+     */
+    public void setPortDescReply(OFPortDescStatsReply portDescReply);
+
+    //************************
+    //  Message handling
+    //************************
+    /**
+     * Handle the message coming from the dataplane.
+     *
+     * @param m the actual message
+     */
+    public void handleMessage(OFMessage m);
+
+
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/IOFSwitchManager.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/IOFSwitchManager.java
new file mode 100644
index 0000000..b3b8ed3
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/IOFSwitchManager.java
@@ -0,0 +1,33 @@
+package net.onrc.onos.of.ctl;
+
+import org.projectfloodlight.openflow.protocol.OFVersion;
+
+import net.onrc.onos.of.ctl.registry.IControllerRegistry;
+
+/**
+ * Interface to passed to controller class in order to allow
+ * it to spawn the appropriate type of switch and furthermore
+ * specify a registry object (ie. ZooKeeper).
+ *
+ */
+public interface IOFSwitchManager {
+
+    /**
+     * Given a description string for a switch spawn the
+     * concrete representation of that switch.
+     *
+     * @param mfr manufacturer description
+     * @param hwDesc hardware description
+     * @param swDesc software description
+     * @param ofv openflow version
+     * @return A switch of type IOFSwitch.
+     */
+    public IOFSwitch getSwitchImpl(String mfr, String hwDesc, String swDesc, OFVersion ofv);
+
+    /**
+     * Returns the mastership registry used during controller-switch role election.
+     * @return the registry
+     */
+    public IControllerRegistry getRegistry();
+
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/Role.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/Role.java
new file mode 100644
index 0000000..d892161
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/Role.java
@@ -0,0 +1,36 @@
+package net.onrc.onos.of.ctl;
+
+import org.projectfloodlight.openflow.protocol.OFControllerRole;
+
+/**
+ * The role of the controller as it pertains to a particular switch.
+ * Note that this definition of the role enum is different from the
+ * OF1.3 definition. It is maintained here to be backward compatible to
+ * earlier versions of the controller code. This enum is translated
+ * to the OF1.3 enum, before role messages are sent to the switch.
+ * See sendRoleRequestMessage method in OFSwitchImpl
+ */
+public enum Role {
+    EQUAL(OFControllerRole.ROLE_EQUAL),
+    MASTER(OFControllerRole.ROLE_MASTER),
+    SLAVE(OFControllerRole.ROLE_SLAVE);
+
+    private Role(OFControllerRole nxRole) {
+        nxRole.ordinal();
+    }
+    /*
+    private static Map<Integer,Role> nxRoleToEnum
+            = new HashMap<Integer,Role>();
+    static {
+        for(Role r: Role.values())
+            nxRoleToEnum.put(r.toNxRole(), r);
+    }
+    public int toNxRole() {
+        return nxRole;
+    }
+    // Return the enum representing the given nxRole or null if no
+    // such role exists
+    public static Role fromNxRole(int nxRole) {
+        return nxRoleToEnum.get(nxRole);
+    }*/
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/annotations/LogMessageCategory.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/annotations/LogMessageCategory.java
new file mode 100644
index 0000000..37ac321
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/annotations/LogMessageCategory.java
@@ -0,0 +1,36 @@
+/**
+ *    Copyright 2012, Big Switch Networks, Inc.
+ *    Originally created by David Erickson, Stanford University
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License"); you may
+ *    not use this file except in compliance with the License. You may obtain
+ *    a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ *    License for the specific language governing permissions and limitations
+ *    under the License.
+ **/
+
+package net.onrc.onos.of.ctl.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation used to set the category for log messages for a class.
+ *
+ */
+@Target({ ElementType.TYPE, ElementType.METHOD })
+public @interface LogMessageCategory {
+
+    /**
+     * The category for the log messages for this class.
+     *
+     * @return
+     */
+    String value() default "Core";
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/annotations/LogMessageDoc.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/annotations/LogMessageDoc.java
new file mode 100644
index 0000000..313e074
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/annotations/LogMessageDoc.java
@@ -0,0 +1,78 @@
+/**
+ *    Copyright 2012, Big Switch Networks, Inc.
+ *    Originally created by David Erickson, Stanford University
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License"); you may
+ *    not use this file except in compliance with the License. You may obtain
+ *    a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ *    License for the specific language governing permissions and limitations
+ *    under the License.
+ **/
+
+package net.onrc.onos.of.ctl.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation used to document log messages.  This can be used to generate
+ * documentation on syslog output.
+ *
+ */
+@Target({ ElementType.TYPE, ElementType.METHOD })
+public @interface LogMessageDoc {
+    public static final String NO_ACTION = "No action is required.";
+    public static final String UNKNOWN_ERROR = "An unknown error occured";
+    public static final String GENERIC_ACTION =
+            "Examine the returned error or exception and take " +
+                    "appropriate action.";
+    public static final String CHECK_SWITCH =
+            "Check the health of the indicated switch.  " +
+                    "Test and troubleshoot IP connectivity.";
+    public static final String CHECK_CONTROLLER =
+            "Verify controller system health, CPU usage, and memory.  " +
+                    "Rebooting the controller node may help if the controller " +
+                    "node is in a distressed state.";
+    public static final String REPORT_CONTROLLER_BUG =
+            "This is likely a defect in the controller.  Please report this " +
+                    "issue.  Restarting the controller or switch may help to " +
+                    "alleviate.";
+    public static final String REPORT_SWITCH_BUG =
+            "This is likely a defect in the switch.  Please report this " +
+                    "issue.  Restarting the controller or switch may help to " +
+                    "alleviate.";
+
+    /**
+     * The log level for the log message.
+     *
+     * @return the log level as a tring
+     */
+    String level() default "INFO";
+
+    /**
+     * The message that will be printed.
+     *
+     * @return the message
+     */
+    String message() default UNKNOWN_ERROR;
+
+    /**
+     * An explanation of the meaning of the log message.
+     *
+     * @return the explanation
+     */
+    String explanation() default UNKNOWN_ERROR;
+
+    /**
+     * The recommendated action associated with the log message.
+     *
+     * @return the recommendation
+     */
+    String recommendation() default NO_ACTION;
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/annotations/LogMessageDocs.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/annotations/LogMessageDocs.java
new file mode 100644
index 0000000..74d4405
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/annotations/LogMessageDocs.java
@@ -0,0 +1,37 @@
+/**
+ *    Copyright 2012, Big Switch Networks, Inc.
+ *    Originally created by David Erickson, Stanford University
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License"); you may
+ *    not use this file except in compliance with the License. You may obtain
+ *    a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ *    License for the specific language governing permissions and limitations
+ *    under the License.
+ **/
+
+package net.onrc.onos.of.ctl.annotations;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+/**
+ * Annotation used to document log messages.  This can be used to generate
+ * documentation on syslog output.  This version allows multiple log messages
+ * to be documentated on an interface.
+ *
+ */
+@Target({ ElementType.TYPE, ElementType.METHOD })
+public @interface LogMessageDocs {
+    /**
+     * A list of {@link LogMessageDoc} elements.
+     *
+     * @return the list of log message doc
+     */
+    LogMessageDoc[] value();
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/debugcounter/DebugCounter.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/debugcounter/DebugCounter.java
new file mode 100644
index 0000000..6ea380c
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/debugcounter/DebugCounter.java
@@ -0,0 +1,726 @@
+package net.onrc.onos.of.ctl.debugcounter;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+import com.google.common.collect.Sets;
+
+
+
+/**
+ * This class implements a central store for all counters used for debugging the
+ * system. For counters based on traffic-type, see ICounterStoreService.
+ *
+ */
+public class DebugCounter implements IDebugCounterService {
+    protected static final Logger log = LoggerFactory.getLogger(DebugCounter.class);
+
+    /**
+     * registered counters need a counter id.
+     */
+    protected AtomicInteger counterIdCounter = new AtomicInteger();
+
+    /**
+     * The counter value.
+     */
+    protected static class MutableLong {
+        long value = 0;
+        public void increment() { value += 1; }
+        public void increment(long incr) { value += incr; }
+        public long get() { return value; }
+        public void set(long val) { value = val; }
+      }
+
+    /**
+     * protected class to store counter information.
+     */
+    public static class CounterInfo {
+        String moduleCounterHierarchy;
+        String counterDesc;
+        CounterType ctype;
+        String moduleName;
+        String counterHierarchy;
+        int counterId;
+        boolean enabled;
+        String[] metaData;
+
+        public CounterInfo(int counterId, boolean enabled,
+                           String moduleName, String counterHierarchy,
+                           String desc, CounterType ctype, String... metaData) {
+            this.moduleCounterHierarchy = moduleName + "/" + counterHierarchy;
+            this.moduleName = moduleName;
+            this.counterHierarchy = counterHierarchy;
+            this.counterDesc = desc;
+            this.ctype = ctype;
+            this.counterId = counterId;
+            this.enabled = enabled;
+            this.metaData = metaData;
+        }
+
+        public String getModuleCounterHierarchy() { return moduleCounterHierarchy; }
+        public String getCounterDesc() { return counterDesc; }
+        public CounterType getCtype() { return ctype; }
+        public String getModuleName() { return moduleName; }
+        public String getCounterHierarchy() { return counterHierarchy; }
+        public int getCounterId() { return counterId; }
+        public boolean isEnabled() { return enabled; }
+        public String[] getMetaData() { return this.metaData.clone(); }
+    }
+
+    //******************
+    //   Global stores
+    //******************
+
+    /**
+     * Counter info for a debug counter.
+     */
+    public static class DebugCounterInfo {
+        CounterInfo cinfo;
+        AtomicLong cvalue;
+
+        public DebugCounterInfo(CounterInfo cinfo) {
+            this.cinfo = cinfo;
+            this.cvalue = new AtomicLong();
+        }
+        public CounterInfo getCounterInfo() {
+            return cinfo;
+        }
+        public Long getCounterValue() {
+            return cvalue.get();
+        }
+    }
+
+    /**
+     * Global debug-counter storage across all threads. These are
+     * updated from the local per thread counters by the flush counters method.
+     */
+    private static final DebugCounterInfo[] ALLCOUNTERS =
+                            new DebugCounterInfo[MAX_COUNTERS];
+
+
+    /**
+     * per module counters, indexed by the module name and storing three levels
+     * of Counter information in the form of CounterIndexStore.
+     */
+    protected ConcurrentHashMap<String, ConcurrentHashMap<String, CounterIndexStore>>
+        moduleCounters = new ConcurrentHashMap<String,
+                                                ConcurrentHashMap<String,
+                                                                   CounterIndexStore>>();
+
+    protected static class CounterIndexStore {
+        int index;
+        Map<String, CounterIndexStore> nextLevel;
+
+        public CounterIndexStore(int index, Map<String, CounterIndexStore> cis) {
+            this.index = index;
+            this.nextLevel = cis;
+        }
+    }
+
+    /**
+     * fast global cache for counter ids that are currently active.
+     */
+    protected Set<Integer> currentCounters = Collections.newSetFromMap(
+                                         new ConcurrentHashMap<Integer, Boolean>());
+
+    //******************
+    // Thread local stores
+    //******************
+
+    /**
+     * Thread local storage of counter info.
+     */
+    protected static class LocalCounterInfo {
+        boolean enabled;
+        MutableLong cvalue;
+
+        public LocalCounterInfo(boolean enabled) {
+            this.enabled = enabled;
+            this.cvalue = new MutableLong();
+        }
+    }
+
+    /**
+     * Thread local debug counters used for maintaining counters local to a thread.
+     */
+    protected final ThreadLocal<LocalCounterInfo[]> threadlocalCounters =
+            new ThreadLocal<LocalCounterInfo[]>() {
+        @Override
+        protected LocalCounterInfo[] initialValue() {
+            return new LocalCounterInfo[MAX_COUNTERS];
+        }
+    };
+
+    /**
+     * Thread local cache for counter ids that are currently active.
+     */
+    protected final ThreadLocal<Set<Integer>> threadlocalCurrentCounters =
+            new ThreadLocal<Set<Integer>>() {
+        @Override
+        protected Set<Integer> initialValue() {
+            return new HashSet<Integer>();
+        }
+    };
+
+    //*******************************
+    //   IDebugCounter
+    //*******************************
+
+    protected class CounterImpl implements IDebugCounter {
+        private final int counterId;
+
+        public CounterImpl(int counterId) {
+            this.counterId = counterId;
+        }
+
+        @Override
+        public void updateCounterWithFlush() {
+            if (!validCounterId()) {
+                return;
+            }
+            updateCounter(counterId, 1, true);
+        }
+
+        @Override
+        public void updateCounterNoFlush() {
+            if (!validCounterId()) {
+                return;
+            }
+            updateCounter(counterId, 1, false);
+        }
+
+        @Override
+        public void updateCounterWithFlush(int incr) {
+            if (!validCounterId()) {
+                return;
+            }
+            updateCounter(counterId, incr, true);
+        }
+
+        @Override
+        public void updateCounterNoFlush(int incr) {
+            if (!validCounterId()) {
+                return;
+            }
+            updateCounter(counterId, incr, false);
+        }
+
+        @Override
+        public long getCounterValue() {
+            if (!validCounterId()) {
+                return -1;
+            }
+            return ALLCOUNTERS[counterId].cvalue.get();
+        }
+
+        /**
+         * Checks if this is a valid counter.
+         * @return true if the counter id is valid
+         */
+        private boolean validCounterId() {
+            if (counterId < 0 || counterId >= MAX_COUNTERS) {
+                log.error("Invalid counterId invoked");
+                return false;
+            }
+            return true;
+        }
+
+    }
+
+   //*******************************
+   //   IDebugCounterService
+   //*******************************
+
+   @Override
+   public IDebugCounter registerCounter(String moduleName, String counterHierarchy,
+                           String counterDescription, CounterType counterType,
+                           String... metaData)
+               throws CounterException {
+       // check if counter already exists
+       if (!moduleCounters.containsKey(moduleName)) {
+           moduleCounters.putIfAbsent(moduleName,
+                new ConcurrentHashMap<String, CounterIndexStore>());
+       }
+       RetCtrInfo rci = getCounterId(moduleName, counterHierarchy);
+       if (rci.allLevelsFound) {
+           // counter exists
+           log.info("Counter exists for {}/{} -- resetting counters", moduleName,
+                    counterHierarchy);
+           resetCounterHierarchy(moduleName, counterHierarchy);
+           return new CounterImpl(rci.ctrIds[rci.foundUptoLevel - 1]);
+       }
+       // check for validity of counter
+       if (rci.levels.length > MAX_HIERARCHY) {
+           String err = "Registry of counterHierarchy " + counterHierarchy +
+                   " exceeds max hierachy " + MAX_HIERARCHY + ".. aborting";
+           throw new MaxHierarchyRegistered(err);
+       }
+       if (rci.foundUptoLevel < rci.levels.length - 1) {
+           StringBuilder sb = new StringBuilder();
+           for (int i = 0; i <= rci.foundUptoLevel; i++) {
+               sb.append(rci.levels[i]);
+           }
+           String needToRegister = sb.toString();
+           String err = "Attempting to register hierarchical counterHierarchy " +
+                   counterHierarchy + " but parts of hierarchy missing. " +
+                   "Please register " +  needToRegister + " first";
+           throw new MissingHierarchicalLevel(err);
+       }
+
+       // get a new counter id
+       int counterId = counterIdCounter.getAndIncrement();
+       if (counterId >= MAX_COUNTERS) {
+           throw new MaxCountersRegistered("max counters reached");
+       }
+       // create storage for counter
+       boolean enabled = (counterType == CounterType.ALWAYS_COUNT) ? true : false;
+       CounterInfo ci = new CounterInfo(counterId, enabled, moduleName,
+                                        counterHierarchy, counterDescription,
+                                        counterType, metaData);
+       ALLCOUNTERS[counterId] = new DebugCounterInfo(ci);
+
+       // account for the new counter in the module counter hierarchy
+       addToModuleCounterHierarchy(moduleName, counterId, rci);
+
+       // finally add to active counters
+       if (enabled) {
+           currentCounters.add(counterId);
+       }
+       return new CounterImpl(counterId);
+   }
+
+   private void updateCounter(int counterId, int incr, boolean flushNow) {
+       if (counterId < 0 || counterId >= MAX_COUNTERS) {
+        return;
+    }
+
+       LocalCounterInfo[] thiscounters =  this.threadlocalCounters.get();
+       if (thiscounters[counterId] == null) {
+           // seeing this counter for the first time in this thread - create local
+           // store by consulting global store
+           DebugCounterInfo dc = ALLCOUNTERS[counterId];
+           if (dc != null) {
+               thiscounters[counterId] = new LocalCounterInfo(dc.cinfo.enabled);
+               if (dc.cinfo.enabled) {
+                   Set<Integer> thisset = this.threadlocalCurrentCounters.get();
+                   thisset.add(counterId);
+               }
+           } else {
+               log.error("updateCounter seen locally for counter {} but no global"
+                          + "storage exists for it yet .. not updating", counterId);
+               return;
+           }
+       }
+
+       // update local store if enabled locally for updating
+       LocalCounterInfo lc = thiscounters[counterId];
+       if (lc.enabled) {
+           lc.cvalue.increment(incr);
+           if (flushNow) {
+               DebugCounterInfo dc = ALLCOUNTERS[counterId];
+               if (dc.cinfo.enabled) {
+                   // globally enabled - flush now
+                   dc.cvalue.addAndGet(lc.cvalue.get());
+                   lc.cvalue.set(0);
+               } else {
+                   // global counter is disabled - don't flush, disable locally
+                   lc.enabled = false;
+                   Set<Integer> thisset = this.threadlocalCurrentCounters.get();
+                   thisset.remove(counterId);
+               }
+           }
+       }
+   }
+
+   @Override
+   public void flushCounters() {
+       LocalCounterInfo[] thiscounters =  this.threadlocalCounters.get();
+       Set<Integer> thisset = this.threadlocalCurrentCounters.get();
+       ArrayList<Integer> temp = new ArrayList<Integer>();
+
+       for (int counterId : thisset) {
+           LocalCounterInfo lc = thiscounters[counterId];
+           if (lc.cvalue.get() > 0) {
+               DebugCounterInfo dc = ALLCOUNTERS[counterId];
+               if (dc.cinfo.enabled) {
+                   // globally enabled - flush now
+                   dc.cvalue.addAndGet(lc.cvalue.get());
+                   lc.cvalue.set(0);
+               } else {
+                   // global counter is disabled - don't flush, disable locally
+                   lc.enabled = false;
+                   temp.add(counterId);
+               }
+           }
+       }
+       for (int cId : temp) {
+           thisset.remove(cId);
+       }
+
+       // At this point it is possible that the thread-local set does not
+       // include a counter that has been enabled and is present in the global set.
+       // We need to sync thread-local currently enabled set of counterIds with
+       // the global set.
+       Sets.SetView<Integer> sv = Sets.difference(currentCounters, thisset);
+       for (int counterId : sv) {
+           if (thiscounters[counterId] != null) {
+               thiscounters[counterId].enabled = true;
+               thisset.add(counterId);
+           }
+       }
+   }
+
+   @Override
+   public void resetCounterHierarchy(String moduleName, String counterHierarchy) {
+       RetCtrInfo rci = getCounterId(moduleName, counterHierarchy);
+       if (!rci.allLevelsFound) {
+           String missing = rci.levels[rci.foundUptoLevel];
+           log.error("Cannot reset counter hierarchy - missing counter {}", missing);
+           return;
+       }
+       // reset at this level
+       ALLCOUNTERS[rci.ctrIds[rci.foundUptoLevel - 1]].cvalue.set(0);
+       // reset all levels below
+       ArrayList<Integer> resetIds = getHierarchyBelow(moduleName, rci);
+       for (int index : resetIds) {
+           ALLCOUNTERS[index].cvalue.set(0);
+       }
+   }
+
+   @Override
+   public void resetAllCounters() {
+       RetCtrInfo rci = new RetCtrInfo();
+       rci.levels = "".split("/");
+       for (String moduleName : moduleCounters.keySet()) {
+           ArrayList<Integer> resetIds = getHierarchyBelow(moduleName, rci);
+           for (int index : resetIds) {
+               ALLCOUNTERS[index].cvalue.set(0);
+           }
+       }
+   }
+
+   @Override
+   public void resetAllModuleCounters(String moduleName) {
+       Map<String, CounterIndexStore> target = moduleCounters.get(moduleName);
+       RetCtrInfo rci = new RetCtrInfo();
+       rci.levels = "".split("/");
+
+       if (target != null) {
+           ArrayList<Integer> resetIds = getHierarchyBelow(moduleName, rci);
+           for (int index : resetIds) {
+               ALLCOUNTERS[index].cvalue.set(0);
+           }
+       } else {
+           if (log.isDebugEnabled()) {
+            log.debug("No module found with name {}", moduleName);
+        }
+       }
+   }
+
+   @Override
+   public void enableCtrOnDemand(String moduleName, String counterHierarchy) {
+       RetCtrInfo rci = getCounterId(moduleName, counterHierarchy);
+       if (!rci.allLevelsFound) {
+           String missing = rci.levels[rci.foundUptoLevel];
+           log.error("Cannot enable counter - counter not found {}", missing);
+           return;
+       }
+       // enable specific counter
+       DebugCounterInfo dc = ALLCOUNTERS[rci.ctrIds[rci.foundUptoLevel - 1]];
+       dc.cinfo.enabled = true;
+       currentCounters.add(dc.cinfo.counterId);
+   }
+
+   @Override
+   public void disableCtrOnDemand(String moduleName, String counterHierarchy) {
+       RetCtrInfo rci = getCounterId(moduleName, counterHierarchy);
+       if (!rci.allLevelsFound) {
+           String missing = rci.levels[rci.foundUptoLevel];
+           log.error("Cannot disable counter - counter not found {}", missing);
+           return;
+       }
+       // disable specific counter
+       DebugCounterInfo dc = ALLCOUNTERS[rci.ctrIds[rci.foundUptoLevel - 1]];
+       if (dc.cinfo.ctype == CounterType.COUNT_ON_DEMAND) {
+           dc.cinfo.enabled = false;
+           dc.cvalue.set(0);
+           currentCounters.remove(dc.cinfo.counterId);
+       }
+   }
+
+   @Override
+   public List<DebugCounterInfo> getCounterHierarchy(String moduleName,
+                                                     String counterHierarchy) {
+       RetCtrInfo rci = getCounterId(moduleName, counterHierarchy);
+       if (!rci.allLevelsFound) {
+           String missing = rci.levels[rci.foundUptoLevel];
+           log.error("Cannot fetch counter - counter not found {}", missing);
+           return Collections.emptyList();
+       }
+       ArrayList<DebugCounterInfo> dcilist = new ArrayList<DebugCounterInfo>();
+       // get counter and all below it
+       DebugCounterInfo dc = ALLCOUNTERS[rci.ctrIds[rci.foundUptoLevel - 1]];
+       dcilist.add(dc);
+       ArrayList<Integer> belowIds = getHierarchyBelow(moduleName, rci);
+       for (int index : belowIds) {
+           dcilist.add(ALLCOUNTERS[index]);
+       }
+       return dcilist;
+   }
+
+   @Override
+   public List<DebugCounterInfo> getAllCounterValues() {
+       List<DebugCounterInfo> dcilist = new ArrayList<DebugCounterInfo>();
+       RetCtrInfo rci = new RetCtrInfo();
+       rci.levels = "".split("/");
+
+       for (String moduleName : moduleCounters.keySet()) {
+           ArrayList<Integer> resetIds = getHierarchyBelow(moduleName, rci);
+           for (int index : resetIds) {
+               dcilist.add(ALLCOUNTERS[index]);
+           }
+       }
+       return dcilist;
+   }
+
+   @Override
+   public List<DebugCounterInfo> getModuleCounterValues(String moduleName) {
+       List<DebugCounterInfo> dcilist = new ArrayList<DebugCounterInfo>();
+       RetCtrInfo rci = new RetCtrInfo();
+       rci.levels = "".split("/");
+
+       if (moduleCounters.containsKey(moduleName)) {
+           ArrayList<Integer> resetIds = getHierarchyBelow(moduleName, rci);
+           for (int index : resetIds) {
+               dcilist.add(ALLCOUNTERS[index]);
+           }
+       }
+       return dcilist;
+   }
+
+   @Override
+   public boolean containsModuleCounterHierarchy(String moduleName,
+                                                 String counterHierarchy) {
+       if (!moduleCounters.containsKey(moduleName)) {
+        return false;
+    }
+       RetCtrInfo rci = getCounterId(moduleName, counterHierarchy);
+       return rci.allLevelsFound;
+   }
+
+   @Override
+   public boolean containsModuleName(String moduleName) {
+       return  (moduleCounters.containsKey(moduleName)) ? true : false;
+   }
+
+   @Override
+   public List<String> getModuleList() {
+       List<String> retval = new ArrayList<String>();
+       retval.addAll(moduleCounters.keySet());
+       return retval;
+   }
+
+   @Override
+   public List<String> getModuleCounterList(String moduleName) {
+       if (!moduleCounters.containsKey(moduleName)) {
+        return Collections.emptyList();
+    }
+
+       List<String> retval = new ArrayList<String>();
+       RetCtrInfo rci = new RetCtrInfo();
+       rci.levels = "".split("/");
+
+       ArrayList<Integer> cids = getHierarchyBelow(moduleName, rci);
+       for (int index : cids) {
+           retval.add(ALLCOUNTERS[index].cinfo.counterHierarchy);
+       }
+       return retval;
+   }
+
+   //*******************************
+   //   Internal Methods
+   //*******************************
+
+   protected class RetCtrInfo {
+       boolean allLevelsFound; // counter indices found all the way down the hierarchy
+       boolean hierarchical; // true if counterHierarchy is hierarchical
+       int foundUptoLevel;
+       int[]  ctrIds;
+       String[] levels;
+
+       public RetCtrInfo() {
+           ctrIds = new int[MAX_HIERARCHY];
+           for (int i = 0; i < MAX_HIERARCHY; i++) {
+               ctrIds[i] = -1;
+           }
+       }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+        result = prime * result + getOuterType().hashCode();
+        result = prime * result + (allLevelsFound ? 1231 : 1237);
+        result = prime * result + Arrays.hashCode(ctrIds);
+        result = prime * result + foundUptoLevel;
+        result = prime * result + (hierarchical ? 1231 : 1237);
+        result = prime * result + Arrays.hashCode(levels);
+        return result;
+    }
+
+    @Override
+    public boolean equals(Object oth) {
+        if (!(oth instanceof RetCtrInfo)) {
+         return false;
+     }
+        RetCtrInfo other = (RetCtrInfo) oth;
+        if (other.allLevelsFound != this.allLevelsFound) {
+         return false;
+     }
+        if (other.hierarchical != this.hierarchical) {
+         return false;
+     }
+        if (other.foundUptoLevel != this.foundUptoLevel) {
+         return false;
+     }
+        if (!Arrays.equals(other.ctrIds, this.ctrIds)) {
+         return false;
+     }
+        if (!Arrays.equals(other.levels, this.levels)) {
+         return false;
+     }
+        return true;
+    }
+
+    private DebugCounter getOuterType() {
+        return DebugCounter.this;
+    }
+
+
+
+   }
+
+   protected RetCtrInfo getCounterId(String moduleName, String counterHierarchy) {
+       RetCtrInfo rci = new RetCtrInfo();
+       Map<String, CounterIndexStore> templevel = moduleCounters.get(moduleName);
+       rci.levels = counterHierarchy.split("/");
+       if (rci.levels.length > 1) {
+        rci.hierarchical = true;
+    }
+       if (templevel == null) {
+           log.error("moduleName {} does not exist in debugCounters", moduleName);
+           return rci;
+       }
+
+       /*
+       if (rci.levels.length > MAX_HIERARCHY) {
+           // chop off all array elems greater that MAX_HIERARCHY
+           String[] temp = new String[MAX_HIERARCHY];
+           System.arraycopy(rci.levels, 0, temp, 0, MAX_HIERARCHY);
+           rci.levels = temp;
+       }
+       */
+       for (int i = 0; i < rci.levels.length; i++) {
+           if (templevel != null) {
+               CounterIndexStore cis = templevel.get(rci.levels[i]);
+               if (cis == null) {
+                   // could not find counterHierarchy part at this level
+                   break;
+               } else {
+                   rci.ctrIds[i] = cis.index;
+                   templevel = cis.nextLevel;
+                   rci.foundUptoLevel++;
+                   if (i == rci.levels.length - 1) {
+                       rci.allLevelsFound = true;
+                   }
+               }
+           } else {
+               // there are no more levels, which means that some part of the
+               // counterHierarchy has no corresponding map
+               break;
+           }
+       }
+       return rci;
+   }
+
+   protected void addToModuleCounterHierarchy(String moduleName, int counterId,
+                                            RetCtrInfo rci) {
+       Map<String, CounterIndexStore> target = moduleCounters.get(moduleName);
+       if (target == null) {
+        return;
+    }
+       CounterIndexStore cis = null;
+
+       for (int i = 0; i < rci.foundUptoLevel; i++) {
+           cis = target.get(rci.levels[i]);
+           target = cis.nextLevel;
+       }
+       if (cis != null) {
+           if (cis.nextLevel == null) {
+            cis.nextLevel = new ConcurrentHashMap<String, CounterIndexStore>();
+        }
+           cis.nextLevel.put(rci.levels[rci.foundUptoLevel],
+                             new CounterIndexStore(counterId, null));
+       } else {
+           target.put(rci.levels[rci.foundUptoLevel],
+                      new CounterIndexStore(counterId, null));
+       }
+   }
+
+   // given a partial hierarchical counter, return the rest of the hierarchy
+   protected ArrayList<Integer> getHierarchyBelow(String moduleName, RetCtrInfo rci) {
+       Map<String, CounterIndexStore> target = moduleCounters.get(moduleName);
+       CounterIndexStore cis = null;
+       ArrayList<Integer> retval = new ArrayList<Integer>();
+       if (target == null) {
+        return retval;
+    }
+
+       // get to the level given
+       for (int i = 0; i < rci.foundUptoLevel; i++) {
+           cis = target.get(rci.levels[i]);
+           target = cis.nextLevel;
+       }
+
+       if (target == null || rci.foundUptoLevel == MAX_HIERARCHY) {
+           // no more levels
+           return retval;
+       } else {
+           // recursively get all ids
+           getIdsAtLevel(target, retval, rci.foundUptoLevel + 1);
+       }
+
+       return retval;
+   }
+
+   protected void getIdsAtLevel(Map<String, CounterIndexStore> hcy,
+                                ArrayList<Integer> retval, int level) {
+       if (level > MAX_HIERARCHY) {
+        return;
+    }
+       if (hcy == null || retval == null) {
+        return;
+    }
+
+       // Can return the counter names as well but for now ids are enough.
+       for (CounterIndexStore cistemp : hcy.values()) {
+           retval.add(cistemp.index); // value at this level
+           if (cistemp.nextLevel != null) {
+               getIdsAtLevel(cistemp.nextLevel, retval, level + 1);
+           }
+       }
+   }
+
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/debugcounter/IDebugCounter.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/debugcounter/IDebugCounter.java
new file mode 100644
index 0000000..e157cf2
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/debugcounter/IDebugCounter.java
@@ -0,0 +1,38 @@
+package net.onrc.onos.of.ctl.debugcounter;
+
+public interface IDebugCounter {
+    /**
+     * Increments the counter by 1 thread-locally, and immediately flushes to
+     * the global counter storage. This method should be used for counters that
+     * are updated outside the OF message processing pipeline.
+     */
+    void updateCounterWithFlush();
+
+    /**
+     * Increments the counter by 1 thread-locally. Flushing to the global
+     * counter storage is delayed (happens with flushCounters() in IDebugCounterService),
+     * resulting in higher performance. This method should be used for counters
+     * updated in the OF message processing pipeline.
+     */
+    void updateCounterNoFlush();
+
+    /**
+     * Increments the counter thread-locally by the 'incr' specified, and immediately
+     * flushes to the global counter storage. This method should be used for counters
+     * that are updated outside the OF message processing pipeline.
+     */
+    void updateCounterWithFlush(int incr);
+
+    /**
+     * Increments the counter thread-locally by the 'incr' specified. Flushing to the global
+     * counter storage is delayed (happens with flushCounters() in IDebugCounterService),
+     * resulting in higher performance. This method should be used for counters
+     * updated in the OF message processing pipeline.
+     */
+    void updateCounterNoFlush(int incr);
+
+    /**
+     * Retrieve the value of the counter from the global counter store.
+     */
+    long getCounterValue();
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/debugcounter/IDebugCounterService.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/debugcounter/IDebugCounterService.java
new file mode 100644
index 0000000..81a80b1
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/debugcounter/IDebugCounterService.java
@@ -0,0 +1,260 @@
+package net.onrc.onos.of.ctl.debugcounter;
+
+
+
+import java.util.List;
+
+import net.onrc.onos.of.ctl.debugcounter.DebugCounter.DebugCounterInfo;
+
+public interface IDebugCounterService {
+
+    /**
+     * Different counter types. Counters that are meant to be counted-on-demand
+     * need to be separately enabled/disabled.
+     */
+    public enum CounterType {
+        ALWAYS_COUNT,
+        COUNT_ON_DEMAND
+    }
+
+    /**
+     * Debug Counter Qualifiers.
+     */
+    public static final String CTR_MDATA_WARN = "warn";
+    public static final String CTR_MDATA_ERROR = "error";
+    public static final String CTR_MDATA_DROP = "drop";
+
+    /**
+     *  A limit on the maximum number of counters that can be created.
+     */
+    public static final int MAX_COUNTERS = 5000;
+
+    /**
+     * Exception thrown when MAX_COUNTERS have been registered.
+     */
+    public class MaxCountersRegistered extends CounterException {
+        private static final long serialVersionUID = 3173747663719376745L;
+        String errormsg;
+        public MaxCountersRegistered(String errormsg) {
+            this.errormsg = errormsg;
+        }
+        @Override
+        public String getMessage() {
+            return this.errormsg;
+        }
+    }
+    /**
+     * Exception thrown when MAX_HIERARCHY has been reached.
+     */
+    public class MaxHierarchyRegistered extends CounterException {
+        private static final long serialVersionUID = 967431358683523871L;
+        private String errormsg;
+        public MaxHierarchyRegistered(String errormsg) {
+            this.errormsg = errormsg;
+        }
+        @Override
+        public String getMessage() {
+            return this.errormsg;
+        }
+    }
+    /**
+     * Exception thrown when attempting to register a hierarchical counter
+     * where higher levels of the hierarchy have not been pre-registered.
+     */
+    public class MissingHierarchicalLevel extends CounterException {
+        private static final long serialVersionUID = 517315311533995739L;
+        private String errormsg;
+        public MissingHierarchicalLevel(String errormsg) {
+            this.errormsg = errormsg;
+        }
+        @Override
+        public String getMessage() {
+            return this.errormsg;
+        }
+    }
+
+    public class CounterException extends Exception {
+        private static final long serialVersionUID = 2219781500857866035L;
+    }
+
+    /**
+     *  maximum levels of hierarchy.
+     *  Example of moduleName/counterHierarchy:
+     *           switch/00:00:00:00:01:02:03:04/pktin/drops where
+     *           moduleName ==> "switch"  and
+     *           counterHierarchy of 3 ==> "00:00:00:00:01:02:03:04/pktin/drops"
+     */
+    public static final int MAX_HIERARCHY = 3;
+
+    /**
+     * All modules that wish to have the DebugCounterService count for them, must
+     * register their counters by making this call (typically from that module's
+     * 'startUp' method). The counter can then be updated, displayed, reset etc.
+     * using the registered moduleName and counterHierarchy.
+     *
+     * @param moduleName           the name of the module which is registering the
+     *                             counter eg. linkdiscovery or controller or switch
+     * @param counterHierarchy     the hierarchical counter name specifying all
+     *                             the hierarchical levels that come above it.
+     *                             For example: to register a drop counter for
+     *                             packet-ins from a switch, the counterHierarchy
+     *                             can be "00:00:00:00:01:02:03:04/pktin/drops"
+     *                             It is necessary that counters in hierarchical levels
+     *                             above have already been pre-registered - in this
+     *                             example: "00:00:00:00:01:02:03:04/pktin" and
+     *                             "00:00:00:00:01:02:03:04"
+     * @param counterDescription   a descriptive string that gives more information
+     *                             of what the counter is measuring. For example,
+     *                             "Measures the number of incoming packets seen by
+     *                             this module".
+     * @param counterType          One of CounterType. On-demand counter types
+     *                             need to be explicitly enabled/disabled using other
+     *                             methods in this API -- i.e. registering them is
+     *                             not enough to start counting.
+     * @param metaData             variable arguments that qualify a counter
+     *                             eg. warn, error etc.
+     * @return                     IDebugCounter with update methods that can be
+     *                             used to update a counter.
+     * @throws MaxCountersRegistered
+     * @throws MaxHierarchyRegistered
+     * @throws MissingHierarchicalLevel
+     */
+    public IDebugCounter registerCounter(String moduleName, String counterHierarchy,
+                             String counterDescription, CounterType counterType,
+                             String... metaData)
+                throws CounterException;
+
+    /**
+     * Flush all thread-local counter values (from the current thread)
+     * to the global counter store. This method is not intended for use by any
+     * module. It's typical usage is from core and it is meant
+     * to flush those counters that are updated in the packet-processing pipeline,
+     * typically with the 'updateCounterNoFlush" methods in IDebugCounter.
+     */
+    public void flushCounters();
+
+    /**
+     * Resets the value of counters in the hierarchy to zero. Note that the reset
+     * applies to the level of counter hierarchy specified AND ALL LEVELS BELOW it
+     * in the hierarchy.
+     * For example: If a hierarchy exists like "00:00:00:00:01:02:03:04/pktin/drops"
+     *              specifying a reset hierarchy: "00:00:00:00:01:02:03:04"
+     *              will reset all counters for the switch dpid specified;
+     *              while specifying a reset hierarchy: ""00:00:00:00:01:02:03:04/pktin"
+     *              will reset the pktin counter and all levels below it (like drops)
+     *              for the switch dpid specified.
+     */
+    void resetCounterHierarchy(String moduleName, String counterHierarchy);
+
+    /**
+     * Resets the values of all counters in the system.
+     */
+    public void resetAllCounters();
+
+    /**
+     * Resets the values of all counters belonging
+     * to a module with the given 'moduleName'.
+     */
+    public void resetAllModuleCounters(String moduleName);
+
+    /**
+     * This method applies only to CounterType.COUNT_ON_DEMAND. It is used to
+     * enable counting on the counter. Note that this step is necessary to start
+     * counting for these counter types - merely registering the counter is not
+     * enough (as is the case for CounterType.ALWAYS_COUNT). Newly
+     * enabled counters start from an initial value of zero.
+     *
+     * Enabling a counter in a counterHierarchy enables only THAT counter. It
+     * does not enable any other part of the counterHierarchy. For example, if
+     * a hierarchy exists like "00:00:00:00:01:02:03:04/pktin/drops", where the
+     * 'pktin' and 'drops' counters are CounterType.COUNT_ON_DEMAND, then enabling
+     * the 'pktin' counter by specifying the counterHierarchy as
+     * "00:00:00:00:01:02:03:04/pktin" does NOT enable the 'drops' counter.
+     */
+    public void enableCtrOnDemand(String moduleName, String counterHierarchy);
+
+    /**
+     * This method applies only to CounterType.COUNT_ON_DEMAND. It is used to
+     * enable counting on the counter. Note that disabling a counter results in a loss
+     * of the counter value. When re-enabled the counter will restart from zero.
+     *
+     * Disabling a counter in a counterHierarchy disables only THAT counter. It
+     * does not disable any other part of the counterHierarchy. For example, if
+     * a hierarchy exists like "00:00:00:00:01:02:03:04/pktin/drops", where the
+     * 'pktin' and 'drops' counters are CounterType.COUNT_ON_DEMAND, then disabling
+     * the 'pktin' counter by specifying the counterHierarchy as
+     * "00:00:00:00:01:02:03:04/pktin" does NOT disable the 'drops' counter.
+     */
+    public void disableCtrOnDemand(String moduleName, String counterHierarchy);
+
+    /**
+     * Get counter value and associated information for the specified counterHierarchy.
+     * Note that information on the level of counter hierarchy specified
+     * AND ALL LEVELS BELOW it in the hierarchy will be returned.
+     *
+     * For example,
+     * if a hierarchy exists like "00:00:00:00:01:02:03:04/pktin/drops", then
+     * specifying a counterHierarchy of "00:00:00:00:01:02:03:04/pktin" in the
+     * get call will return information on the 'pktin' as well as the 'drops'
+     * counters for the switch dpid specified.
+     *
+     * @return A list of DebugCounterInfo or an empty list if the counter
+     *         could not be found
+     */
+    public List<DebugCounterInfo> getCounterHierarchy(String moduleName,
+                                                      String counterHierarchy);
+
+    /**
+     * Get counter values and associated information for all counters in the
+     * system.
+     *
+     * @return the list of values/info or an empty list
+     */
+    public  List<DebugCounterInfo> getAllCounterValues();
+
+    /**
+     * Get counter values and associated information for all counters associated
+     * with a module.
+     *
+     * @param moduleName
+     * @return the list of values/info or an empty list
+     */
+    public  List<DebugCounterInfo> getModuleCounterValues(String moduleName);
+
+    /**
+     * Convenience method to figure out if the the given 'counterHierarchy' corresponds
+     * to a registered counterHierarchy for 'moduleName'. Note that the counter may or
+     * may not be enabled for counting, but if it is registered the method will
+     * return true.
+     *
+     * @param param
+     * @return false if moduleCounterHierarchy is not a registered counter
+     */
+    public boolean containsModuleCounterHierarchy(String moduleName,
+                                                  String counterHierarchy);
+
+    /**
+     * Convenience method to figure out if the the given 'moduleName' corresponds
+     * to a registered moduleName or not. Note that the module may or may not have
+     * a counter enabled for counting, but if it is registered the method will
+     * return true.
+     *
+     * @param param
+     * @return false if moduleName is not a registered counter
+     */
+    public boolean containsModuleName(String moduleName);
+
+    /**
+     * Returns a list of moduleNames registered for debug counters or an empty
+     * list if no counters have been registered in the system.
+     */
+    public List<String> getModuleList();
+
+    /**
+     * Returns a list of all counters registered for a specific moduleName
+     * or a empty list.
+     */
+    public List<String> getModuleCounterList(String moduleName);
+
+
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/debugcounter/NullDebugCounter.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/debugcounter/NullDebugCounter.java
new file mode 100644
index 0000000..1775c50
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/debugcounter/NullDebugCounter.java
@@ -0,0 +1,116 @@
+package net.onrc.onos.of.ctl.debugcounter;
+
+import java.util.Collections;
+import java.util.List;
+
+import net.onrc.onos.of.ctl.debugcounter.DebugCounter.DebugCounterInfo;
+
+public class NullDebugCounter implements IDebugCounterService {
+
+    @Override
+    public void flushCounters() {
+
+    }
+
+    @Override
+    public void resetAllCounters() {
+
+    }
+
+    @Override
+    public void resetAllModuleCounters(String moduleName) {
+
+    }
+
+
+    @Override
+    public void resetCounterHierarchy(String moduleName, String counterHierarchy) {
+
+    }
+
+    @Override
+    public void enableCtrOnDemand(String moduleName, String counterHierarchy) {
+
+    }
+
+    @Override
+    public void disableCtrOnDemand(String moduleName, String counterHierarchy) {
+
+    }
+
+    @Override
+    public List<DebugCounterInfo> getCounterHierarchy(String moduleName,
+                                                      String counterHierarchy) {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public List<DebugCounterInfo> getAllCounterValues() {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public List<DebugCounterInfo> getModuleCounterValues(String moduleName) {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public boolean containsModuleCounterHierarchy(String moduleName,
+                                             String counterHierarchy) {
+        return false;
+    }
+
+    @Override
+    public boolean containsModuleName(String moduleName) {
+        return false;
+    }
+
+    @Override
+    public
+            IDebugCounter
+            registerCounter(String moduleName, String counterHierarchy,
+                            String counterDescription,
+                            CounterType counterType, String... metaData)
+                                 throws MaxCountersRegistered {
+        return new NullCounterImpl();
+    }
+
+    @Override
+    public List<String> getModuleList() {
+        return Collections.emptyList();
+    }
+
+    @Override
+    public List<String> getModuleCounterList(String moduleName) {
+        return Collections.emptyList();
+    }
+
+    public static class NullCounterImpl implements IDebugCounter {
+
+        @Override
+        public void updateCounterWithFlush() {
+
+        }
+
+        @Override
+        public void updateCounterNoFlush() {
+
+        }
+
+        @Override
+        public void updateCounterWithFlush(int incr) {
+        }
+
+        @Override
+        public void updateCounterNoFlush(int incr) {
+
+        }
+
+        @Override
+        public long getCounterValue() {
+            return -1;
+        }
+
+    }
+
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/Controller.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/Controller.java
new file mode 100644
index 0000000..84f090a
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/Controller.java
@@ -0,0 +1,839 @@
+/**
+ *    Copyright 2011, Big Switch Networks, Inc.
+ *    Originally created by David Erickson, Stanford University
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License"); you may
+ *    not use this file except in compliance with the License. You may obtain
+ *    a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ *    License for the specific language governing permissions and limitations
+ *    under the License.
+ **/
+
+package net.onrc.onos.of.ctl.internal;
+
+import java.lang.management.ManagementFactory;
+import java.lang.management.RuntimeMXBean;
+import java.net.InetSocketAddress;
+import java.net.UnknownHostException;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.Executors;
+
+import net.onrc.onos.of.ctl.IOFSwitchManager;
+import net.onrc.onos.of.ctl.Role;
+import net.onrc.onos.of.ctl.annotations.LogMessageDoc;
+import net.onrc.onos.of.ctl.annotations.LogMessageDocs;
+import net.onrc.onos.of.ctl.debugcounter.DebugCounter;
+import net.onrc.onos.of.ctl.debugcounter.IDebugCounter;
+import net.onrc.onos.of.ctl.debugcounter.IDebugCounterService;
+import net.onrc.onos.of.ctl.debugcounter.IDebugCounterService.CounterException;
+import net.onrc.onos.of.ctl.debugcounter.IDebugCounterService.CounterType;
+import net.onrc.onos.of.ctl.internal.OFChannelHandler.RoleRecvStatus;
+import net.onrc.onos.of.ctl.registry.IControllerRegistry;
+import net.onrc.onos.of.ctl.registry.RegistryException;
+import net.onrc.onos.of.ctl.registry.IControllerRegistry.ControlChangeCallback;
+import net.onrc.onos.of.ctl.util.Dpid;
+import net.onrc.onos.of.ctl.util.DummySwitchForTesting;
+import net.onrc.onos.of.ctl.util.InstanceId;
+import net.onrc.onos.of.ctl.IOFSwitch;
+import net.onrc.onos.of.ctl.IOFSwitch.PortChangeType;
+
+import org.apache.felix.scr.annotations.Activate;
+import org.apache.felix.scr.annotations.Component;
+import org.jboss.netty.bootstrap.ServerBootstrap;
+import org.jboss.netty.channel.ChannelPipelineFactory;
+import org.jboss.netty.channel.group.ChannelGroup;
+import org.jboss.netty.channel.group.DefaultChannelGroup;
+import org.jboss.netty.channel.socket.nio.NioServerSocketChannelFactory;
+import org.projectfloodlight.openflow.protocol.OFDescStatsReply;
+import org.projectfloodlight.openflow.protocol.OFFactories;
+import org.projectfloodlight.openflow.protocol.OFFactory;
+import org.projectfloodlight.openflow.protocol.OFPortDesc;
+import org.projectfloodlight.openflow.protocol.OFVersion;
+import org.projectfloodlight.openflow.util.HexString;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * The main controller class.  Handles all setup and network listeners
+ * - Distributed ownership control of switch through IControllerRegistryService
+ */
+@Component(immediate = true)
+public class Controller {
+
+    protected static final Logger log = LoggerFactory.getLogger(Controller.class);
+    static final String ERROR_DATABASE =
+            "The controller could not communicate with the system database.";
+    protected static final OFFactory FACTORY13 = OFFactories.getFactory(OFVersion.OF_13);
+    protected static final OFFactory FACTORY10 = OFFactories.getFactory(OFVersion.OF_10);
+
+    // connectedSwitches cache contains all connected switch's channelHandlers
+    // including ones where this controller is a master/equal/slave controller
+    // as well as ones that have not been activated yet
+    protected ConcurrentHashMap<Long, OFChannelHandler> connectedSwitches;
+    // These caches contains only those switches that are active
+    protected ConcurrentHashMap<Long, IOFSwitch> activeMasterSwitches;
+    protected ConcurrentHashMap<Long, IOFSwitch> activeEqualSwitches;
+    // lock to synchronize on, when manipulating multiple caches above
+    private Object multiCacheLock;
+
+    // The controllerNodeIPsCache maps Controller IDs to their IP address.
+    // It's only used by handleControllerNodeIPsChanged
+    protected HashMap<String, String> controllerNodeIPsCache;
+
+    // Module dependencies
+
+    protected IControllerRegistry registryService;
+    protected IDebugCounterService debugCounters;
+
+
+    private IOFSwitchManager switchManager;
+
+    // Configuration options
+    protected int openFlowPort = 6633;
+    protected int workerThreads = 0;
+
+    // defined counters
+    private Counters counters;
+
+    // Start time of the controller
+    protected long systemStartTime;
+
+    // Flag to always flush flow table on switch reconnect (HA or otherwise)
+    protected boolean alwaysClearFlowsOnSwAdd = false;
+    private InstanceId instanceId;
+
+    // Perf. related configuration
+    protected static final int SEND_BUFFER_SIZE = 4 * 1024 * 1024;
+    protected static final int BATCH_MAX_SIZE = 100;
+    protected static final boolean ALWAYS_DECODE_ETH = true;
+
+    protected boolean addConnectedSwitch(long dpid, OFChannelHandler h) {
+        if (connectedSwitches.get(dpid) != null) {
+            log.error("Trying to add connectedSwitch but found a previous "
+                    + "value for dpid: {}", dpid);
+            return false;
+        } else {
+            log.error("Added switch {}", dpid);
+            connectedSwitches.put(dpid, h);
+            return true;
+        }
+    }
+
+    private boolean validActivation(long dpid) {
+        if (connectedSwitches.get(dpid) == null) {
+            log.error("Trying to activate switch but is not in "
+                    + "connected switches: dpid {}. Aborting ..",
+                    HexString.toHexString(dpid));
+            return false;
+        }
+        if (activeMasterSwitches.get(dpid) != null ||
+                activeEqualSwitches.get(dpid) != null) {
+            log.error("Trying to activate switch but it is already "
+                    + "activated: dpid {}. Found in activeMaster: {} "
+                    + "Found in activeEqual: {}. Aborting ..", new Object[] {
+                            HexString.toHexString(dpid),
+                            (activeMasterSwitches.get(dpid) == null) ? 'N' : 'Y',
+                            (activeEqualSwitches.get(dpid) == null) ? 'N' : 'Y'});
+            counters.switchWithSameDpidActivated.updateCounterWithFlush();
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * Called when a switch is activated, with this controller's role as MASTER.
+     */
+    protected boolean addActivatedMasterSwitch(long dpid, IOFSwitch sw) {
+        synchronized (multiCacheLock) {
+            if (!validActivation(dpid)) {
+                return false;
+            }
+            activeMasterSwitches.put(dpid, sw);
+        }
+        //update counters and events
+        counters.switchActivated.updateCounterWithFlush();
+
+        return true;
+    }
+
+    /**
+     * Called when a switch is activated, with this controller's role as EQUAL.
+     */
+    protected boolean addActivatedEqualSwitch(long dpid, IOFSwitch sw) {
+        synchronized (multiCacheLock) {
+            if (!validActivation(dpid)) {
+                return false;
+            }
+            activeEqualSwitches.put(dpid, sw);
+        }
+        //update counters and events
+        counters.switchActivated.updateCounterWithFlush();
+        return true;
+    }
+
+    /**
+     * Called when this controller's role for a switch transitions from equal
+     * to master. For 1.0 switches, we internally refer to the role 'slave' as
+     * 'equal' - so this transition is equivalent to 'addActivatedMasterSwitch'.
+     */
+    protected void transitionToMasterSwitch(long dpid) {
+        synchronized (multiCacheLock) {
+            IOFSwitch sw = activeEqualSwitches.remove(dpid);
+            if (sw == null) {
+                log.error("Transition to master called on sw {}, but switch "
+                        + "was not found in controller-cache", dpid);
+                return;
+            }
+            activeMasterSwitches.put(dpid, sw);
+        }
+    }
+
+
+    /**
+     * Called when this controller's role for a switch transitions to equal.
+     * For 1.0 switches, we internally refer to the role 'slave' as
+     * 'equal'.
+     */
+    protected void transitionToEqualSwitch(long dpid) {
+        synchronized (multiCacheLock) {
+            IOFSwitch sw = activeMasterSwitches.remove(dpid);
+            if (sw == null) {
+                log.error("Transition to equal called on sw {}, but switch "
+                        + "was not found in controller-cache", dpid);
+                return;
+            }
+            activeEqualSwitches.put(dpid, sw);
+        }
+
+    }
+
+    /**
+     * Clear all state in controller switch maps for a switch that has
+     * disconnected from the local controller. Also release control for
+     * that switch from the global repository. Notify switch listeners.
+     */
+    protected void removeConnectedSwitch(long dpid) {
+        releaseRegistryControl(dpid);
+        connectedSwitches.remove(dpid);
+        IOFSwitch sw = activeMasterSwitches.remove(dpid);
+        if (sw == null) {
+            sw = activeEqualSwitches.remove(dpid);
+        }
+        if (sw != null) {
+            sw.cancelAllStatisticsReplies();
+            sw.setConnected(false); // do we need this?
+        }
+        counters.switchDisconnected.updateCounterWithFlush();
+
+    }
+
+    /**
+     * Indicates that ports on the given switch have changed. Enqueue a
+     * switch update.
+     * @param sw
+     */
+    protected void notifyPortChanged(long dpid, OFPortDesc port,
+            PortChangeType changeType) {
+        if (port == null || changeType == null) {
+            String msg = String.format("Switch port or changetType must not "
+                    + "be null in port change notification");
+            throw new NullPointerException(msg);
+        }
+        if (connectedSwitches.get(dpid) == null || getSwitch(dpid) == null) {
+            log.warn("Port change update on switch {} not connected or activated "
+                    + "... Aborting.", HexString.toHexString(dpid));
+            return;
+        }
+
+    }
+
+    // ***************
+    // Getters/Setters
+    // ***************
+
+
+    public synchronized void setIOFSwitchManager(IOFSwitchManager swManager) {
+        this.switchManager = swManager;
+        this.registryService = swManager.getRegistry();
+    }
+
+
+    public void setDebugCounter(IDebugCounterService dcs) {
+        this.debugCounters = dcs;
+    }
+
+    IDebugCounterService getDebugCounter() {
+        return this.debugCounters;
+    }
+
+    // **********************
+    // Role Handling
+    // **********************
+
+    /**
+     * created by ONOS - works with registry service.
+     */
+    protected class RoleChangeCallback implements ControlChangeCallback {
+        @Override
+        public void controlChanged(long dpidLong, boolean hasControl) {
+            Dpid dpid = new Dpid(dpidLong);
+            log.info("Role change callback for switch {}, hasControl {}",
+                    dpid, hasControl);
+
+            Role role = null;
+
+            /*
+             * issue #229
+             * Cannot rely on sw.getRole() as it can be behind due to pending
+             * role changes in the queue. Just submit it and late the
+             * RoleChanger handle duplicates.
+             */
+
+            if (hasControl) {
+                role = Role.MASTER;
+            } else {
+                role = Role.EQUAL; // treat the same as Role.SLAVE
+            }
+
+            OFChannelHandler swCh = connectedSwitches.get(dpid.value());
+            if (swCh == null) {
+                log.warn("Switch {} not found in connected switches", dpid);
+                return;
+            }
+
+            log.debug("Sending role request {} msg to {}", role, dpid);
+            swCh.sendRoleRequest(role, RoleRecvStatus.MATCHED_SET_ROLE);
+        }
+    }
+
+    /**
+     * Submit request to the registry service for mastership of the
+     * switch.
+     * @param dpid this datapath to get role for
+     */
+    public synchronized void submitRegistryRequest(long dpid) {
+        if (registryService == null) {
+            /*
+             * If we have no registry then simply assign
+             * mastership to this controller.
+             */
+            new RoleChangeCallback().controlChanged(dpid, true);
+            return;
+        }
+        OFChannelHandler h = connectedSwitches.get(dpid);
+        if (h == null) {
+            log.error("Trying to request registry control for switch {} "
+                    + "not in connected switches. Aborting.. ",
+                    HexString.toHexString(dpid));
+            connectedSwitches.get(dpid).disconnectSwitch();
+            return;
+        }
+        //Request control of the switch from the global registry
+        try {
+            h.controlRequested = Boolean.TRUE;
+            registryService.requestControl(dpid, new RoleChangeCallback());
+        } catch (RegistryException e) {
+            log.debug("Registry error: {}", e.getMessage());
+            h.controlRequested = Boolean.FALSE;
+        }
+        if (!h.controlRequested) { // XXX what is being attempted here?
+            // yield to allow other thread(s) to release control
+            // TODO AAS: this is awful and needs to be fixed
+            Thread.yield();
+            // safer to bounce the switch to reconnect here than proceeding further
+            // XXX S why? can't we just try again a little later?
+            log.debug("Closing sw:{} because we weren't able to request control " +
+                    "successfully" + dpid);
+            connectedSwitches.get(dpid).disconnectSwitch();
+        }
+    }
+
+    /**
+     * Relinquish role for the switch.
+     * @param dpidLong the controlled datapath
+     */
+    public synchronized void releaseRegistryControl(long dpidLong) {
+        OFChannelHandler h = connectedSwitches.get(dpidLong);
+        if (h == null) {
+            log.error("Trying to release registry control for switch {} "
+                    + "not in connected switches. Aborting.. ",
+                    HexString.toHexString(dpidLong));
+            return;
+        }
+        if (registryService != null && h.controlRequested) {
+            //TODO the above is not good for testing need to change controlrequest to method call.
+            registryService.releaseControl(dpidLong);
+        }
+    }
+
+
+    // FIXME: remove this method
+    public Map<Long, IOFSwitch> getSwitches() {
+        return getMasterSwitches();
+    }
+
+    // FIXME: remove this method
+    public Map<Long, IOFSwitch> getMasterSwitches() {
+        return Collections.unmodifiableMap(activeMasterSwitches);
+    }
+
+
+
+    public Set<Long> getAllSwitchDpids() {
+        Set<Long> dpids = new HashSet<Long>();
+        dpids.addAll(activeMasterSwitches.keySet());
+        dpids.addAll(activeEqualSwitches.keySet());
+        return dpids;
+    }
+
+
+    public Set<Long> getAllMasterSwitchDpids() {
+        Set<Long> dpids = new HashSet<Long>();
+        dpids.addAll(activeMasterSwitches.keySet());
+        return dpids;
+    }
+
+
+    public Set<Long> getAllEqualSwitchDpids() {
+        Set<Long> dpids = new HashSet<Long>();
+        dpids.addAll(activeEqualSwitches.keySet());
+        return dpids;
+    }
+
+
+    public IOFSwitch getSwitch(long dpid) {
+        IOFSwitch sw = null;
+        sw = activeMasterSwitches.get(dpid);
+        if (sw != null) {
+            return sw;
+        }
+        sw = activeEqualSwitches.get(dpid);
+        if (sw != null) {
+            return sw;
+        }
+        return sw;
+    }
+
+
+    public IOFSwitch getMasterSwitch(long dpid) {
+        return  activeMasterSwitches.get(dpid);
+    }
+
+
+    public IOFSwitch getEqualSwitch(long dpid) {
+        return  activeEqualSwitches.get(dpid);
+    }
+
+
+
+
+
+    public OFFactory getOFMessageFactory10() {
+        return FACTORY10;
+    }
+
+
+    public OFFactory getOFMessageFactory13() {
+        return FACTORY13;
+    }
+
+
+
+    public Map<String, String> getControllerNodeIPs() {
+        // We return a copy of the mapping so we can guarantee that
+        // the mapping return is the same as one that will be (or was)
+        // dispatched to IHAListeners
+        HashMap<String, String> retval = new HashMap<String, String>();
+        synchronized (controllerNodeIPsCache) {
+            retval.putAll(controllerNodeIPsCache);
+        }
+        return retval;
+    }
+
+
+    public long getSystemStartTime() {
+        return (this.systemStartTime);
+    }
+
+
+    public InstanceId getInstanceId() {
+        return instanceId;
+    }
+
+
+    // **************
+    // Initialization
+    // **************
+
+    /**
+     * Tell controller that we're ready to accept switches loop.
+     *
+     * @throws IOException
+     */
+    @LogMessageDocs({
+            @LogMessageDoc(message = "Listening for switch connections on {address}",
+                    explanation = "The controller is ready and listening for new" +
+                            " switch connections"),
+            @LogMessageDoc(message = "Storage exception in controller " +
+                    "updates loop; terminating process",
+                    explanation = ERROR_DATABASE,
+                    recommendation = LogMessageDoc.CHECK_CONTROLLER),
+            @LogMessageDoc(level = "ERROR",
+                    message = "Exception in controller updates loop",
+                    explanation = "Failed to dispatch controller event",
+                    recommendation = LogMessageDoc.GENERIC_ACTION)
+    })
+    public void run() {
+
+        try {
+            final ServerBootstrap bootstrap = createServerBootStrap();
+
+            bootstrap.setOption("reuseAddr", true);
+            bootstrap.setOption("child.keepAlive", true);
+            bootstrap.setOption("child.tcpNoDelay", true);
+            bootstrap.setOption("child.sendBufferSize", Controller.SEND_BUFFER_SIZE);
+
+            ChannelPipelineFactory pfact =
+                    new OpenflowPipelineFactory(this, null);
+            bootstrap.setPipelineFactory(pfact);
+            InetSocketAddress sa = new InetSocketAddress(openFlowPort);
+            final ChannelGroup cg = new DefaultChannelGroup();
+            cg.add(bootstrap.bind(sa));
+
+            log.info("Listening for switch connections on {}", sa);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
+
+    }
+
+    private ServerBootstrap createServerBootStrap() {
+        if (workerThreads == 0) {
+            return new ServerBootstrap(
+                    new NioServerSocketChannelFactory(
+                            Executors.newCachedThreadPool(),
+                            Executors.newCachedThreadPool()));
+        } else {
+            return new ServerBootstrap(
+                    new NioServerSocketChannelFactory(
+                            Executors.newCachedThreadPool(),
+                            Executors.newCachedThreadPool(), workerThreads));
+        }
+    }
+
+    public void setConfigParams(Map<String, String> configParams) {
+        String ofPort = configParams.get("openflowport");
+        if (ofPort != null) {
+            this.openFlowPort = Integer.parseInt(ofPort);
+        }
+        log.debug("OpenFlow port set to {}", this.openFlowPort);
+        String threads = configParams.get("workerthreads");
+        if (threads != null) {
+            this.workerThreads = Integer.parseInt(threads);
+        }
+        log.debug("Number of worker threads set to {}", this.workerThreads);
+        String controllerId = configParams.get("controllerid");
+        if (controllerId != null) {
+            this.instanceId = new InstanceId(controllerId);
+        } else {
+            //Try to get the hostname of the machine and use that for controller ID
+            try {
+                String hostname = java.net.InetAddress.getLocalHost().getHostName();
+                this.instanceId = new InstanceId(hostname);
+            } catch (UnknownHostException e) {
+                log.warn("Can't get hostname, using the default");
+            }
+        }
+
+        log.debug("ControllerId set to {}", this.instanceId);
+    }
+
+
+    /**
+     * Initialize internal data structures.
+     */
+    public void init(Map<String, String> configParams) {
+        // These data structures are initialized here because other
+        // module's startUp() might be called before ours
+        this.activeMasterSwitches = new ConcurrentHashMap<Long, IOFSwitch>();
+        this.activeEqualSwitches = new ConcurrentHashMap<Long, IOFSwitch>();
+        this.connectedSwitches = new ConcurrentHashMap<Long, OFChannelHandler>();
+        this.controllerNodeIPsCache = new HashMap<String, String>();
+
+        setConfigParams(configParams);
+        this.systemStartTime = System.currentTimeMillis();
+        this.setDebugCounter(new DebugCounter());
+        this.counters = new Counters();
+        this.multiCacheLock = new Object();
+
+    }
+
+    /**
+     * Startup all of the controller's components.
+     */
+    @LogMessageDoc(message = "Waiting for storage source",
+            explanation = "The system database is not yet ready",
+            recommendation = "If this message persists, this indicates " +
+                    "that the system database has failed to start. " +
+                    LogMessageDoc.CHECK_CONTROLLER)
+    public synchronized void startupComponents() {
+        try {
+            if (registryService != null) {
+                registryService.registerController(instanceId.toString());
+            }
+        } catch (RegistryException e) {
+            log.warn("Registry service error: {}", e.getMessage());
+        }
+
+        // register counters and events
+        try {
+            this.counters.createCounters(debugCounters);
+        } catch (CounterException e) {
+            log.warn("Counters unavailable: {}", e.getMessage());
+        }
+    }
+
+    // **************
+    // debugCounter registrations
+    // **************
+
+    public static class Counters {
+        public static final String PREFIX = "controller";
+        public IDebugCounter switchActivated;
+        public IDebugCounter switchWithSameDpidActivated; // warn
+        public IDebugCounter switchDisconnected;
+        public IDebugCounter messageReceived;
+        public IDebugCounter switchDisconnectReadTimeout;
+        public IDebugCounter switchDisconnectHandshakeTimeout;
+        public IDebugCounter switchDisconnectIOError;
+        public IDebugCounter switchDisconnectParseError;
+        public IDebugCounter switchDisconnectSwitchStateException;
+        public IDebugCounter rejectedExecutionException;
+        public IDebugCounter switchDisconnectOtherException;
+        public IDebugCounter switchConnected;
+        public IDebugCounter unhandledMessage;
+        public IDebugCounter packetInWhileSwitchIsSlave;
+        public IDebugCounter epermErrorWhileSwitchIsMaster;
+        public IDebugCounter roleReplyTimeout;
+        public IDebugCounter roleReplyReceived; // expected RoleReply received
+        public IDebugCounter roleReplyErrorUnsupported;
+        public IDebugCounter switchCounterRegistrationFailed;
+
+        void createCounters(IDebugCounterService debugCounters) throws CounterException {
+
+            switchActivated =
+                debugCounters.registerCounter(
+                            PREFIX, "switch-activated",
+                            "A switch connected to this controller is now " +
+                            "in MASTER role",
+                            CounterType.ALWAYS_COUNT);
+
+            switchWithSameDpidActivated = // warn
+                debugCounters.registerCounter(
+                            PREFIX, "switch-with-same-dpid-activated",
+                            "A switch with the same DPID as another switch " +
+                            "connected to the controller. This can be " +
+                            "caused by multiple switches configured with " +
+                            "the same DPID or by a switch reconnecting very " +
+                            "quickly.",
+                            CounterType.COUNT_ON_DEMAND,
+                            IDebugCounterService.CTR_MDATA_WARN);
+
+            switchDisconnected =
+                debugCounters.registerCounter(
+                            PREFIX, "switch-disconnected",
+                            "FIXME: switch has disconnected",
+                            CounterType.ALWAYS_COUNT);
+
+        //------------------------
+        // channel handler counters. Factor them out ??
+            messageReceived =
+                debugCounters.registerCounter(
+                            PREFIX, "message-received",
+                            "Number of OpenFlow messages received. Some of " +
+                            "these might be throttled",
+                            CounterType.ALWAYS_COUNT);
+
+            switchDisconnectReadTimeout =
+                debugCounters.registerCounter(
+                            PREFIX, "switch-disconnect-read-timeout",
+                            "Number of times a switch was disconnected due " +
+                            "due the switch failing to send OpenFlow " +
+                            "messages or responding to OpenFlow ECHOs",
+                            CounterType.ALWAYS_COUNT,
+                            IDebugCounterService.CTR_MDATA_ERROR);
+            switchDisconnectHandshakeTimeout =
+                debugCounters.registerCounter(
+                            PREFIX, "switch-disconnect-handshake-timeout",
+                            "Number of times a switch was disconnected " +
+                            "because it failed to complete the handshake " +
+                            "in time.",
+                            CounterType.ALWAYS_COUNT,
+                            IDebugCounterService.CTR_MDATA_ERROR);
+            switchDisconnectIOError =
+                debugCounters.registerCounter(
+                            PREFIX, "switch-disconnect-io-error",
+                            "Number of times a switch was disconnected " +
+                            "due to IO errors on the switch connection.",
+                            CounterType.ALWAYS_COUNT,
+                            IDebugCounterService.CTR_MDATA_ERROR);
+            switchDisconnectParseError =
+                debugCounters.registerCounter(
+                            PREFIX, "switch-disconnect-parse-error",
+                           "Number of times a switch was disconnected " +
+                           "because it sent an invalid packet that could " +
+                           "not be parsed",
+                           CounterType.ALWAYS_COUNT,
+                           IDebugCounterService.CTR_MDATA_ERROR);
+
+            switchDisconnectSwitchStateException =
+                debugCounters.registerCounter(
+                            PREFIX, "switch-disconnect-switch-state-exception",
+                            "Number of times a switch was disconnected " +
+                            "because it sent messages that were invalid " +
+                            "given the switch connection's state.",
+                            CounterType.ALWAYS_COUNT,
+                            IDebugCounterService.CTR_MDATA_ERROR);
+            rejectedExecutionException =
+                debugCounters.registerCounter(
+                            PREFIX, "rejected-execution-exception",
+                            "TODO",
+                            CounterType.ALWAYS_COUNT,
+                            IDebugCounterService.CTR_MDATA_ERROR);
+
+            switchDisconnectOtherException =
+                debugCounters.registerCounter(
+                            PREFIX,  "switch-disconnect-other-exception",
+                            "Number of times a switch was disconnected " +
+                            "due to an exceptional situation not covered " +
+                            "by other counters",
+                            CounterType.ALWAYS_COUNT,
+                            IDebugCounterService.CTR_MDATA_ERROR);
+
+            switchConnected =
+                debugCounters.registerCounter(
+                            PREFIX, "switch-connected",
+                            "Number of times a new switch connection was " +
+                            "established",
+                            CounterType.ALWAYS_COUNT);
+
+            unhandledMessage =
+                debugCounters.registerCounter(
+                            PREFIX, "unhandled-message",
+                            "Number of times an OpenFlow message was " +
+                            "received that the controller ignored because " +
+                            "it was inapproriate given the switch " +
+                            "connection's state.",
+                            CounterType.ALWAYS_COUNT,
+                            IDebugCounterService.CTR_MDATA_WARN);
+                            // might be less than warning
+
+            packetInWhileSwitchIsSlave =
+                debugCounters.registerCounter(
+                            PREFIX, "packet-in-while-switch-is-slave",
+                            "Number of times a packet in was received " +
+                            "from a switch that was in SLAVE role. " +
+                            "Possibly inidicates inconsistent roles.",
+                            CounterType.ALWAYS_COUNT);
+            epermErrorWhileSwitchIsMaster =
+                debugCounters.registerCounter(
+                            PREFIX, "eperm-error-while-switch-is-master",
+                            "Number of times a permission error was " +
+                            "received while the switch was in MASTER role. " +
+                            "Possibly inidicates inconsistent roles.",
+                            CounterType.ALWAYS_COUNT,
+                            IDebugCounterService.CTR_MDATA_WARN);
+
+            roleReplyTimeout =
+                debugCounters.registerCounter(
+                            PREFIX, "role-reply-timeout",
+                            "Number of times a role request message did not " +
+                            "receive the expected reply from a switch",
+                            CounterType.ALWAYS_COUNT,
+                            IDebugCounterService.CTR_MDATA_WARN);
+
+            roleReplyReceived = // expected RoleReply received
+                debugCounters.registerCounter(
+                            PREFIX, "role-reply-received",
+                            "Number of times the controller received the " +
+                            "expected role reply message from a switch",
+                            CounterType.ALWAYS_COUNT);
+
+            roleReplyErrorUnsupported =
+                debugCounters.registerCounter(
+                            PREFIX, "role-reply-error-unsupported",
+                            "Number of times the controller received an " +
+                            "error from a switch in response to a role " +
+                            "request indicating that the switch does not " +
+                            "support roles.",
+                            CounterType.ALWAYS_COUNT);
+
+            switchCounterRegistrationFailed =
+                    debugCounters.registerCounter(PREFIX,
+                                "switch-counter-registration-failed",
+                                "Number of times the controller failed to " +
+                                "register per-switch debug counters",
+                                CounterType.ALWAYS_COUNT,
+                                IDebugCounterService.CTR_MDATA_WARN);
+
+
+        }
+    }
+
+    public Counters getCounters() {
+        return this.counters;
+    }
+
+
+    // **************
+    // Utility methods
+    // **************
+
+    public Map<String, Long> getMemory() {
+        Map<String, Long> m = new HashMap<String, Long>();
+        Runtime runtime = Runtime.getRuntime();
+        m.put("total", runtime.totalMemory());
+        m.put("free", runtime.freeMemory());
+        return m;
+    }
+
+
+    public Long getUptime() {
+        RuntimeMXBean rb = ManagementFactory.getRuntimeMXBean();
+        return rb.getUptime();
+    }
+
+    /**
+     * Forward to the driver-manager to get an IOFSwitch instance.
+     * @param desc
+     * @return
+     */
+    protected IOFSwitch getOFSwitchInstance(OFDescStatsReply desc, OFVersion ofv) {
+        if (switchManager == null) {
+            return new DummySwitchForTesting();
+        }
+        return switchManager.getSwitchImpl(desc.getMfrDesc(), desc.getHwDesc(),
+                                            desc.getSwDesc(), ofv);
+    }
+
+    @Activate
+    public void activate() {
+        log.info("Initialising OpenFlow Lib and IO");
+        this.init(new HashMap<String, String>());
+        this.startupComponents();
+        this.run();
+    }
+
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/HandshakeTimeoutException.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/HandshakeTimeoutException.java
new file mode 100644
index 0000000..48856a9
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/HandshakeTimeoutException.java
@@ -0,0 +1,29 @@
+/**
+ *    Copyright 2011, Big Switch Networks, Inc.
+ *    Originally created by David Erickson, Stanford University
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License"); you may
+ *    not use this file except in compliance with the License. You may obtain
+ *    a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ *    License for the specific language governing permissions and limitations
+ *    under the License.
+ **/
+
+package net.onrc.onos.of.ctl.internal;
+
+/**
+ * Exception is thrown when the handshake fails to complete.
+ * before a specified time
+ *
+ */
+public class HandshakeTimeoutException extends Exception {
+
+    private static final long serialVersionUID = 6859880268940337312L;
+
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/HandshakeTimeoutHandler.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/HandshakeTimeoutHandler.java
new file mode 100644
index 0000000..2ed3fd2
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/HandshakeTimeoutHandler.java
@@ -0,0 +1,94 @@
+/**
+*    Copyright 2011, Big Switch Networks, Inc.
+*    Originally created by David Erickson, Stanford University
+*
+*    Licensed under the Apache License, Version 2.0 (the "License"); you may
+*    not use this file except in compliance with the License. You may obtain
+*    a copy of the License at
+*
+*         http://www.apache.org/licenses/LICENSE-2.0
+*
+*    Unless required by applicable law or agreed to in writing, software
+*    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+*    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+*    License for the specific language governing permissions and limitations
+*    under the License.
+**/
+
+package net.onrc.onos.of.ctl.internal;
+
+import java.util.concurrent.TimeUnit;
+
+import org.jboss.netty.channel.ChannelHandlerContext;
+import org.jboss.netty.channel.ChannelStateEvent;
+import org.jboss.netty.channel.Channels;
+import org.jboss.netty.channel.SimpleChannelUpstreamHandler;
+import org.jboss.netty.util.Timeout;
+import org.jboss.netty.util.Timer;
+import org.jboss.netty.util.TimerTask;
+
+/**
+ * Trigger a timeout if a switch fails to complete handshake soon enough.
+ */
+public class HandshakeTimeoutHandler
+    extends SimpleChannelUpstreamHandler {
+    static final HandshakeTimeoutException EXCEPTION =
+            new HandshakeTimeoutException();
+
+    final OFChannelHandler channelHandler;
+    final Timer timer;
+    final long timeoutNanos;
+    volatile Timeout timeout;
+
+    public HandshakeTimeoutHandler(OFChannelHandler channelHandler,
+                                   Timer timer,
+                                   long timeoutSeconds) {
+        super();
+        this.channelHandler = channelHandler;
+        this.timer = timer;
+        this.timeoutNanos = TimeUnit.SECONDS.toNanos(timeoutSeconds);
+
+    }
+
+    @Override
+    public void channelOpen(ChannelHandlerContext ctx, ChannelStateEvent e)
+            throws Exception {
+        if (timeoutNanos > 0) {
+            timeout = timer.newTimeout(new HandshakeTimeoutTask(ctx),
+                                       timeoutNanos, TimeUnit.NANOSECONDS);
+        }
+        ctx.sendUpstream(e);
+    }
+
+    @Override
+    public void channelClosed(ChannelHandlerContext ctx, ChannelStateEvent e)
+            throws Exception {
+        if (timeout != null) {
+            timeout.cancel();
+            timeout = null;
+        }
+    }
+
+    private final class HandshakeTimeoutTask implements TimerTask {
+
+        private final ChannelHandlerContext ctx;
+
+        HandshakeTimeoutTask(ChannelHandlerContext ctx) {
+            this.ctx = ctx;
+        }
+
+        @Override
+        public void run(Timeout t) throws Exception {
+            if (t.isCancelled()) {
+                return;
+            }
+
+            if (!ctx.getChannel().isOpen()) {
+                return;
+            }
+            if (!channelHandler.isHandshakeComplete()) {
+                Channels.fireExceptionCaught(ctx, EXCEPTION);
+            }
+        }
+    }
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/OFChannelHandler.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/OFChannelHandler.java
new file mode 100644
index 0000000..3b18a59
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/OFChannelHandler.java
@@ -0,0 +1,2153 @@
+package net.onrc.onos.of.ctl.internal;
+
+import java.io.IOException;
+import java.nio.channels.ClosedChannelException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
+import java.util.concurrent.RejectedExecutionException;
+
+import net.onrc.onos.of.ctl.IOFSwitch;
+import net.onrc.onos.of.ctl.IOFSwitch.PortChangeEvent;
+import net.onrc.onos.of.ctl.Role;
+import net.onrc.onos.of.ctl.annotations.LogMessageDoc;
+import net.onrc.onos.of.ctl.annotations.LogMessageDocs;
+import net.onrc.onos.of.ctl.debugcounter.IDebugCounterService.CounterException;
+import net.onrc.onos.of.ctl.internal.Controller.Counters;
+import net.onrc.onos.of.ctl.internal.OFChannelHandler.ChannelState.RoleReplyInfo;
+
+import org.jboss.netty.channel.Channel;
+import org.jboss.netty.channel.ChannelHandlerContext;
+import org.jboss.netty.channel.ChannelStateEvent;
+import org.jboss.netty.channel.ExceptionEvent;
+import org.jboss.netty.channel.MessageEvent;
+import org.jboss.netty.handler.timeout.IdleStateAwareChannelHandler;
+import org.jboss.netty.handler.timeout.IdleStateEvent;
+import org.jboss.netty.handler.timeout.ReadTimeoutException;
+import org.projectfloodlight.openflow.exceptions.OFParseError;
+import org.projectfloodlight.openflow.protocol.OFAsyncGetReply;
+import org.projectfloodlight.openflow.protocol.OFBadRequestCode;
+import org.projectfloodlight.openflow.protocol.OFBarrierReply;
+import org.projectfloodlight.openflow.protocol.OFBarrierRequest;
+import org.projectfloodlight.openflow.protocol.OFControllerRole;
+import org.projectfloodlight.openflow.protocol.OFDescStatsReply;
+import org.projectfloodlight.openflow.protocol.OFDescStatsRequest;
+import org.projectfloodlight.openflow.protocol.OFEchoReply;
+import org.projectfloodlight.openflow.protocol.OFEchoRequest;
+import org.projectfloodlight.openflow.protocol.OFErrorMsg;
+import org.projectfloodlight.openflow.protocol.OFErrorType;
+import org.projectfloodlight.openflow.protocol.OFExperimenter;
+import org.projectfloodlight.openflow.protocol.OFFactory;
+import org.projectfloodlight.openflow.protocol.OFFeaturesReply;
+import org.projectfloodlight.openflow.protocol.OFFlowModFailedCode;
+import org.projectfloodlight.openflow.protocol.OFFlowRemoved;
+import org.projectfloodlight.openflow.protocol.OFGetConfigReply;
+import org.projectfloodlight.openflow.protocol.OFGetConfigRequest;
+import org.projectfloodlight.openflow.protocol.OFHello;
+import org.projectfloodlight.openflow.protocol.OFHelloElem;
+import org.projectfloodlight.openflow.protocol.OFMessage;
+import org.projectfloodlight.openflow.protocol.OFNiciraControllerRole;
+import org.projectfloodlight.openflow.protocol.OFNiciraControllerRoleReply;
+import org.projectfloodlight.openflow.protocol.OFPacketIn;
+import org.projectfloodlight.openflow.protocol.OFPortDescStatsReply;
+import org.projectfloodlight.openflow.protocol.OFPortDescStatsRequest;
+import org.projectfloodlight.openflow.protocol.OFPortStatus;
+import org.projectfloodlight.openflow.protocol.OFQueueGetConfigReply;
+import org.projectfloodlight.openflow.protocol.OFRoleReply;
+import org.projectfloodlight.openflow.protocol.OFRoleRequest;
+import org.projectfloodlight.openflow.protocol.OFSetConfig;
+import org.projectfloodlight.openflow.protocol.OFStatsReply;
+import org.projectfloodlight.openflow.protocol.OFStatsReplyFlags;
+import org.projectfloodlight.openflow.protocol.OFStatsType;
+import org.projectfloodlight.openflow.protocol.OFType;
+import org.projectfloodlight.openflow.protocol.OFVersion;
+import org.projectfloodlight.openflow.protocol.errormsg.OFBadRequestErrorMsg;
+import org.projectfloodlight.openflow.protocol.errormsg.OFFlowModFailedErrorMsg;
+import org.projectfloodlight.openflow.protocol.errormsg.OFRoleRequestFailedErrorMsg;
+import org.projectfloodlight.openflow.types.U32;
+import org.projectfloodlight.openflow.types.U64;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+/**
+ * Channel handler deals with the switch connection and dispatches
+ * switch messages to the appropriate locations.
+ */
+class OFChannelHandler extends IdleStateAwareChannelHandler {
+    private static final Logger log = LoggerFactory.getLogger(OFChannelHandler.class);
+    private static final long DEFAULT_ROLE_TIMEOUT_MS = 2 * 1000; // 10 sec
+    private final Controller controller;
+    private final Counters counters;
+    private IOFSwitch sw;
+    private long thisdpid; // channelHandler cached value of connected switch id
+    private Channel channel;
+    // State needs to be volatile because the HandshakeTimeoutHandler
+    // needs to check if the handshake is complete
+    private volatile ChannelState state;
+
+    // All role messaging is handled by the roleChanger. The channel state machine
+    // coordinates between the roleChanger and the controller-global-registry-service
+    // to determine controller roles per switch.
+    private RoleChanger roleChanger;
+    // Used to coordinate between the controller and the cleanup thread(?)
+    // for access to the global registry on a per switch basis.
+    volatile Boolean controlRequested;
+    // When a switch with a duplicate dpid is found (i.e we already have a
+    // connected switch with the same dpid), the new switch is immediately
+    // disconnected. At that point netty callsback channelDisconnected() which
+    // proceeds to cleaup switch state - we need to ensure that it does not cleanup
+    // switch state for the older (still connected) switch
+    private volatile Boolean duplicateDpidFound;
+
+    // Temporary storage for switch-features and port-description
+    private OFFeaturesReply featuresReply;
+    private OFPortDescStatsReply portDescReply;
+    // a concurrent ArrayList to temporarily store port status messages
+    // before we are ready to deal with them
+    private final CopyOnWriteArrayList<OFPortStatus> pendingPortStatusMsg;
+
+    //Indicates the openflow version used by this switch
+    protected OFVersion ofVersion;
+    protected OFFactory factory13;
+    protected OFFactory factory10;
+
+    /** transaction Ids to use during handshake. Since only one thread
+     * calls into an OFChannelHandler instance, we don't need atomic.
+     * We will count down
+     */
+    private int handshakeTransactionIds = -1;
+
+    /**
+     * Create a new unconnected OFChannelHandler.
+     * @param controller
+     */
+    OFChannelHandler(Controller controller) {
+        this.controller = controller;
+        this.counters = controller.getCounters();
+        this.roleChanger = new RoleChanger(DEFAULT_ROLE_TIMEOUT_MS);
+        this.state = ChannelState.INIT;
+        this.pendingPortStatusMsg = new CopyOnWriteArrayList<OFPortStatus>();
+        factory13 = controller.getOFMessageFactory13();
+        factory10 = controller.getOFMessageFactory10();
+        controlRequested = Boolean.FALSE;
+        duplicateDpidFound = Boolean.FALSE;
+    }
+
+    //*******************
+    //  Role Handling
+    //*******************
+
+    /**
+     * When we remove a pending role request we use this enum to indicate how we
+     * arrived at the decision. When we send a role request to the switch, we
+     * also use  this enum to indicate what we expect back from the switch, so the
+     * role changer can match the reply to our expectation.
+     */
+    public enum RoleRecvStatus {
+        /** The switch returned an error indicating that roles are not.
+         * supported*/
+        UNSUPPORTED,
+        /** The request timed out. */
+        NO_REPLY,
+        /** The reply was old, there is a newer request pending. */
+        OLD_REPLY,
+        /**
+         *  The reply's role matched the role that this controller set in the
+         *  request message - invoked either initially at startup or to reassert
+         *  current role.
+         */
+        MATCHED_CURRENT_ROLE,
+        /**
+         *  The reply's role matched the role that this controller set in the
+         *  request message - this is the result of a callback from the
+         *  global registry, followed by a role request sent to the switch.
+         */
+        MATCHED_SET_ROLE,
+        /**
+         * The reply's role was a response to the query made by this controller.
+         */
+        REPLY_QUERY,
+        /** We received a role reply message from the switch
+         *  but the expectation was unclear, or there was no expectation.
+         */
+        OTHER_EXPECTATION,
+    }
+
+    /**
+     * Forwards to RoleChanger. See there.
+     * @param role
+     */
+    public void sendRoleRequest(Role role, RoleRecvStatus expectation) {
+        try {
+            roleChanger.sendRoleRequest(role, expectation);
+        } catch (IOException e) {
+            log.error("Disconnecting switch {} due to IO Error: {}",
+                    getSwitchInfoString(), e.getMessage());
+            channel.close();
+        }
+    }
+
+    // XXX S consider if necessary
+    public void disconnectSwitch() {
+        sw.disconnectSwitch();
+    }
+
+    /**
+     * A utility class to handle role requests and replies for this channel.
+     * After a role request is submitted the role changer keeps track of the
+     * pending request, collects the reply (if any) and times out the request
+     * if necessary.
+     *
+     * To simplify role handling we only keep track of the /last/ pending
+     * role reply send to the switch. If multiple requests are pending and
+     * we receive replies for earlier requests we ignore them. However, this
+     * way of handling pending requests implies that we could wait forever if
+     * a new request is submitted before the timeout triggers. If necessary
+     * we could work around that though.
+     */
+    private class RoleChanger {
+        // indicates that a request is currently pending
+        // needs to be volatile to allow correct double-check idiom
+        private volatile boolean requestPending;
+        // the transaction Id of the pending request
+        private int pendingXid;
+        // the role that's pending
+        private Role pendingRole;
+        // system time in MS when we send the request
+        private long roleSubmitTime;
+        // the timeout to use
+        private final long roleTimeoutMs;
+        // the expectation set by the caller for the returned role
+        private RoleRecvStatus expectation;
+
+        public RoleChanger(long roleTimeoutMs) {
+            this.requestPending = false;
+            this.roleSubmitTime = 0;
+            this.pendingXid = -1;
+            this.pendingRole = null;
+            this.roleTimeoutMs = roleTimeoutMs;
+            this.expectation = RoleRecvStatus.MATCHED_CURRENT_ROLE;
+        }
+
+        /**
+         * Send NX role request message to the switch requesting the specified
+         * role.
+         *
+         * @param sw switch to send the role request message to
+         * @param role role to request
+         */
+        private int sendNxRoleRequest(Role role) throws IOException {
+            // Convert the role enum to the appropriate role to send
+            OFNiciraControllerRole roleToSend = OFNiciraControllerRole.ROLE_OTHER;
+            switch (role) {
+            case MASTER:
+                roleToSend = OFNiciraControllerRole.ROLE_MASTER;
+                break;
+            case SLAVE:
+            case EQUAL:
+            default:
+                // ensuring that the only two roles sent to 1.0 switches with
+                // Nicira role support, are MASTER and SLAVE
+                roleToSend = OFNiciraControllerRole.ROLE_SLAVE;
+                log.warn("Sending Nx Role.SLAVE to switch {}.", sw);
+            }
+            int xid = sw.getNextTransactionId();
+            OFExperimenter roleRequest = factory10
+                    .buildNiciraControllerRoleRequest()
+                    .setXid(xid)
+                    .setRole(roleToSend)
+                    .build();
+            sw.write(Collections.<OFMessage>singletonList(roleRequest));
+            return xid;
+        }
+
+        private int sendOF13RoleRequest(Role role) throws IOException {
+            // Convert the role enum to the appropriate role to send
+            OFControllerRole roleToSend = OFControllerRole.ROLE_NOCHANGE;
+            switch (role) {
+            case EQUAL:
+                roleToSend = OFControllerRole.ROLE_EQUAL;
+                break;
+            case MASTER:
+                roleToSend = OFControllerRole.ROLE_MASTER;
+                break;
+            case SLAVE:
+                roleToSend = OFControllerRole.ROLE_SLAVE;
+                break;
+            default:
+                log.warn("Sending default role.noChange to switch {}."
+                        + " Should only be used for queries.", sw);
+            }
+
+            int xid = sw.getNextTransactionId();
+            OFRoleRequest rrm = factory13
+                    .buildRoleRequest()
+                    .setRole(roleToSend)
+                    .setXid(xid)
+                    .setGenerationId(sw.getNextGenerationId())
+                    .build();
+            sw.write(rrm);
+            return xid;
+        }
+
+        /**
+         * Send a role request with the given role to the switch and update
+         * the pending request and timestamp.
+         * Sends an OFPT_ROLE_REQUEST to an OF1.3 switch, OR
+         * Sends an NX_ROLE_REQUEST to an OF1.0 switch if configured to support it
+         * in the IOFSwitch driver. If not supported, this method sends nothing
+         * and returns 'false'. The caller should take appropriate action.
+         *
+         * One other optimization we do here is that for OF1.0 switches with
+         * Nicira role message support, we force the Role.EQUAL to become
+         * Role.SLAVE, as there is no defined behavior for the Nicira role OTHER.
+         * We cannot expect it to behave like SLAVE. We don't have this problem with
+         * OF1.3 switches, because Role.EQUAL is well defined and we can simulate
+         * SLAVE behavior by using ASYNC messages.
+         *
+         * @param role
+         * @throws IOException
+         * @returns false if and only if the switch does not support role-request
+         * messages, according to the switch driver; true otherwise.
+         */
+        synchronized boolean sendRoleRequest(Role role, RoleRecvStatus exp)
+                throws IOException {
+            this.expectation = exp;
+
+            if (ofVersion == OFVersion.OF_10) {
+                Boolean supportsNxRole = (Boolean)
+                        sw.getAttribute(IOFSwitch.SWITCH_SUPPORTS_NX_ROLE);
+                if (!supportsNxRole) {
+                    log.debug("Switch driver indicates no support for Nicira "
+                            + "role request messages. Not sending ...");
+                    state.handleUnsentRoleMessage(OFChannelHandler.this, role,
+                            expectation);
+                    return false;
+                }
+                // OF1.0 switch with support for NX_ROLE_REQUEST vendor extn.
+                // make Role.EQUAL become Role.SLAVE
+                role = (role == Role.EQUAL) ? Role.SLAVE : role;
+                pendingXid = sendNxRoleRequest(role);
+                pendingRole = role;
+                roleSubmitTime = System.currentTimeMillis();
+                requestPending = true;
+            } else {
+                // OF1.3 switch, use OFPT_ROLE_REQUEST message
+                pendingXid = sendOF13RoleRequest(role);
+                pendingRole = role;
+                roleSubmitTime = System.currentTimeMillis();
+                requestPending = true;
+            }
+            return true;
+        }
+
+        /**
+         * Deliver a received role reply.
+         *
+         * Check if a request is pending and if the received reply matches the
+         * the expected pending reply (we check both role and xid) we set
+         * the role for the switch/channel.
+         *
+         * If a request is pending but doesn't match the reply we ignore it, and
+         * return
+         *
+         * If no request is pending we disconnect with a SwitchStateException
+         *
+         * @param RoleReplyInfo information about role-reply in format that
+         *                      controller can understand.
+         * @throws SwitchStateException if no request is pending
+         */
+        synchronized RoleRecvStatus deliverRoleReply(RoleReplyInfo rri)
+                throws SwitchStateException {
+            if (!requestPending) {
+                Role currentRole = (sw != null) ? sw.getRole() : null;
+                if (currentRole != null) {
+                    if (currentRole == rri.getRole()) {
+                        // Don't disconnect if the role reply we received is
+                        // for the same role we are already in.
+                        log.debug("Received unexpected RoleReply from "
+                                + "Switch: {} in State: {}. "
+                                + "Role in reply is same as current role of this "
+                                + "controller for this sw. Ignoring ...",
+                                getSwitchInfoString(), state.toString());
+                        return RoleRecvStatus.OTHER_EXPECTATION;
+                    } else {
+                        String msg = String.format("Switch: [%s], State: [%s], "
+                                + "received unexpected RoleReply[%s]. "
+                                + "No roles are pending, and this controller's "
+                                + "current role:[%s] does not match reply. "
+                                + "Disconnecting switch ... ",
+                                OFChannelHandler.this.getSwitchInfoString(),
+                                OFChannelHandler.this.state.toString(),
+                                rri, currentRole);
+                        throw new SwitchStateException(msg);
+                    }
+                }
+                log.debug("Received unexpected RoleReply {} from "
+                        + "Switch: {} in State: {}. "
+                        + "This controller has no current role for this sw. "
+                        + "Ignoring ...", new Object[] {rri,
+                                getSwitchInfoString(), state});
+                return RoleRecvStatus.OTHER_EXPECTATION;
+            }
+
+            int xid = (int) rri.getXid();
+            Role role = rri.getRole();
+            // XXX S should check generation id meaningfully and other cases of expectations
+            // U64 genId = rri.getGenId();
+
+            if (pendingXid != xid) {
+                log.debug("Received older role reply from " +
+                        "switch {} ({}). Ignoring. " +
+                        "Waiting for {}, xid={}",
+                        new Object[] {getSwitchInfoString(), rri,
+                        pendingRole, pendingXid });
+                return RoleRecvStatus.OLD_REPLY;
+            }
+
+            if (pendingRole == role) {
+                log.debug("Received role reply message from {} that matched "
+                        + "expected role-reply {} with expectations {}",
+                        new Object[] {getSwitchInfoString(), role, expectation});
+                counters.roleReplyReceived.updateCounterWithFlush();
+                //setSwitchRole(role, RoleRecvStatus.RECEIVED_REPLY); dont want to set state here
+                if (expectation == RoleRecvStatus.MATCHED_CURRENT_ROLE ||
+                        expectation == RoleRecvStatus.MATCHED_SET_ROLE) {
+                    return expectation;
+                } else {
+                    return RoleRecvStatus.OTHER_EXPECTATION;
+                }
+            }
+
+            // if xids match but role's don't, perhaps its a query (OF1.3)
+            if (expectation == RoleRecvStatus.REPLY_QUERY) {
+                return expectation;
+            }
+
+            return RoleRecvStatus.OTHER_EXPECTATION;
+        }
+
+        /**
+         * Called if we receive an  error message. If the xid matches the
+         * pending request we handle it otherwise we ignore it.
+         *
+         * Note: since we only keep the last pending request we might get
+         * error messages for earlier role requests that we won't be able
+         * to handle
+         */
+        synchronized RoleRecvStatus deliverError(OFErrorMsg error)
+                throws SwitchStateException {
+            if (!requestPending) {
+                log.debug("Received an error msg from sw {}, but no pending "
+                        + "requests in role-changer; not handling ...",
+                        getSwitchInfoString());
+                return RoleRecvStatus.OTHER_EXPECTATION;
+            }
+            if (pendingXid != error.getXid()) {
+                if (error.getErrType() == OFErrorType.ROLE_REQUEST_FAILED) {
+                    log.debug("Received an error msg from sw {} for a role request,"
+                            + " but not for pending request in role-changer; "
+                            + " ignoring error {} ...",
+                            getSwitchInfoString(), error);
+                }
+                return RoleRecvStatus.OTHER_EXPECTATION;
+            }
+            // it is an error related to a currently pending role request message
+            if (error.getErrType() == OFErrorType.BAD_REQUEST) {
+                counters.roleReplyErrorUnsupported.updateCounterWithFlush();
+                log.error("Received a error msg {} from sw {} in state {} for "
+                        + "pending role request {}. Switch driver indicates "
+                        + "role-messaging is supported. Possible issues in "
+                        + "switch driver configuration?", new Object[] {
+                                ((OFBadRequestErrorMsg) error).toString(),
+                                getSwitchInfoString(), state, pendingRole
+                        });
+                return RoleRecvStatus.UNSUPPORTED;
+            }
+
+            if (error.getErrType() == OFErrorType.ROLE_REQUEST_FAILED) {
+                OFRoleRequestFailedErrorMsg rrerr =
+                        (OFRoleRequestFailedErrorMsg) error;
+                switch (rrerr.getCode()) {
+                case BAD_ROLE:
+                    // switch says that current-role-req has bad role?
+                    // for now we disconnect
+                    // fall-thru
+                case STALE:
+                    // switch says that current-role-req has stale gen-id?
+                    // for now we disconnect
+                    // fall-thru
+                case UNSUP:
+                    // switch says that current-role-req has role that
+                    // cannot be supported? for now we disconnect
+                    String msgx = String.format("Switch: [%s], State: [%s], "
+                            + "received Error to for pending role request [%s]. "
+                            + "Error:[%s]. Disconnecting switch ... ",
+                            OFChannelHandler.this.getSwitchInfoString(),
+                            OFChannelHandler.this.state.toString(),
+                            pendingRole, rrerr);
+                    throw new SwitchStateException(msgx);
+                default:
+                    break;
+                }
+            }
+
+            // This error message was for a role request message but we dont know
+            // how to handle errors for nicira role request messages
+            return RoleRecvStatus.OTHER_EXPECTATION;
+        }
+
+        /**
+         * Check if a pending role request has timed out.
+         */
+        void checkTimeout() {
+            if (!requestPending) {
+                return;
+            }
+            synchronized (this) {
+                if (!requestPending) {
+                    return;
+                }
+                long now = System.currentTimeMillis();
+                if (now - roleSubmitTime > roleTimeoutMs) {
+                    // timeout triggered.
+                    counters.roleReplyTimeout.updateCounterWithFlush();
+                    //setSwitchRole(pendingRole, RoleRecvStatus.NO_REPLY);
+                    // XXX S come back to this
+                }
+            }
+        }
+
+    }
+
+    //*************************
+    //  Channel State Machine
+    //*************************
+
+    /**
+     * The state machine for handling the switch/channel state. All state
+     * transitions should happen from within the state machine (and not from other
+     * parts of the code)
+     */
+    enum ChannelState {
+        /**
+         * Initial state before channel is connected.
+         */
+        INIT(false) {
+            @Override
+            void processOFMessage(OFChannelHandler h, OFMessage m)
+                    throws IOException, SwitchStateException {
+                illegalMessageReceived(h, m);
+            }
+
+            @Override
+            void processOFError(OFChannelHandler h, OFErrorMsg m)
+                    throws IOException {
+                // need to implement since its abstract but it will never
+                // be called
+            }
+
+            @Override
+            void processOFPortStatus(OFChannelHandler h, OFPortStatus m)
+                    throws IOException {
+                unhandledMessageReceived(h, m);
+            }
+        },
+
+        /**
+         * We send a OF 1.3 HELLO to the switch and wait for a Hello from the switch.
+         * Once we receive the reply, we decide on OF 1.3 or 1.0 switch - no other
+         * protocol version is accepted.
+         * We send an OFFeaturesRequest depending on the protocol version selected
+         * Next state is WAIT_FEATURES_REPLY
+         */
+        WAIT_HELLO(false) {
+            @Override
+            void processOFHello(OFChannelHandler h, OFHello m)
+                    throws IOException {
+                // TODO We could check for the optional bitmap, but for now
+                // we are just checking the version number.
+                if (m.getVersion() == OFVersion.OF_13) {
+                    log.info("Received {} Hello from {}", m.getVersion(),
+                            h.channel.getRemoteAddress());
+                    h.ofVersion = OFVersion.OF_13;
+                } else if (m.getVersion() == OFVersion.OF_10) {
+                    log.info("Received {} Hello from {} - switching to OF "
+                            + "version 1.0", m.getVersion(),
+                            h.channel.getRemoteAddress());
+                    h.ofVersion = OFVersion.OF_10;
+                } else {
+                    log.error("Received Hello of version {} from switch at {}. "
+                            + "This controller works with OF1.0 and OF1.3 "
+                            + "switches. Disconnecting switch ...",
+                            m.getVersion(), h.channel.getRemoteAddress());
+                    h.channel.disconnect();
+                    return;
+                }
+                h.sendHandshakeFeaturesRequestMessage();
+                h.setState(WAIT_FEATURES_REPLY);
+            }
+            @Override
+            void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply  m)
+                    throws IOException, SwitchStateException {
+                illegalMessageReceived(h, m);
+            }
+            @Override
+            void processOFStatisticsReply(OFChannelHandler h,
+                    OFStatsReply  m)
+                            throws IOException, SwitchStateException {
+                illegalMessageReceived(h, m);
+            }
+            @Override
+            void processOFError(OFChannelHandler h, OFErrorMsg m) {
+                logErrorDisconnect(h, m);
+            }
+
+            @Override
+            void processOFPortStatus(OFChannelHandler h, OFPortStatus m)
+                    throws IOException {
+                unhandledMessageReceived(h, m);
+            }
+        },
+
+
+        /**
+         * We are waiting for a features reply message. Once we receive it, the
+         * behavior depends on whether this is a 1.0 or 1.3 switch. For 1.0,
+         * we send a SetConfig request, barrier, and GetConfig request and the
+         * next state is WAIT_CONFIG_REPLY. For 1.3, we send a Port description
+         * request and the next state is WAIT_PORT_DESC_REPLY.
+         */
+        WAIT_FEATURES_REPLY(false) {
+            @Override
+            void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply  m)
+                    throws IOException {
+                h.thisdpid = m.getDatapathId().getLong();
+                log.info("Received features reply for switch at {} with dpid {}",
+                        h.getSwitchInfoString(), h.thisdpid);
+                //update the controller about this connected switch
+                boolean success = h.controller.addConnectedSwitch(
+                        h.thisdpid, h);
+                if (!success) {
+                    disconnectDuplicate(h);
+                    return;
+                }
+
+                h.featuresReply = m; //temp store
+                if (h.ofVersion == OFVersion.OF_10) {
+                    h.sendHandshakeSetConfig();
+                    h.setState(WAIT_CONFIG_REPLY);
+                } else {
+                    //version is 1.3, must get switchport information
+                    h.sendHandshakeOFPortDescRequest();
+                    h.setState(WAIT_PORT_DESC_REPLY);
+                }
+            }
+            @Override
+            void processOFStatisticsReply(OFChannelHandler h,
+                    OFStatsReply  m)
+                            throws IOException, SwitchStateException {
+                illegalMessageReceived(h, m);
+            }
+            @Override
+            void processOFError(OFChannelHandler h, OFErrorMsg m) {
+                logErrorDisconnect(h, m);
+            }
+
+            @Override
+            void processOFPortStatus(OFChannelHandler h, OFPortStatus m)
+                    throws IOException {
+                unhandledMessageReceived(h, m);
+            }
+        },
+
+        /**
+         * We are waiting for a description of the 1.3 switch ports.
+         * Once received, we send a SetConfig request
+         * Next State is WAIT_CONFIG_REPLY
+         */
+        WAIT_PORT_DESC_REPLY(false) {
+
+            @Override
+            void processOFStatisticsReply(OFChannelHandler h, OFStatsReply m)
+                    throws SwitchStateException {
+                // Read port description
+                if (m.getStatsType() != OFStatsType.PORT_DESC) {
+                    log.warn("Expecting port description stats but received stats "
+                            + "type {} from {}. Ignoring ...", m.getStatsType(),
+                            h.channel.getRemoteAddress());
+                    return;
+                }
+                if (m.getFlags().contains(OFStatsReplyFlags.REPLY_MORE)) {
+                    log.warn("Stats reply indicates more stats from sw {} for "
+                            + "port description - not currently handled",
+                            h.getSwitchInfoString());
+                }
+                h.portDescReply = (OFPortDescStatsReply) m; // temp store
+                log.info("Received port desc reply for switch at {}",
+                        h.getSwitchInfoString());
+                try {
+                    h.sendHandshakeSetConfig();
+                } catch (IOException e) {
+                    log.error("Unable to send setConfig after PortDescReply. "
+                            + "Error: {}", e.getMessage());
+                }
+                h.setState(WAIT_CONFIG_REPLY);
+            }
+
+            @Override
+            void processOFError(OFChannelHandler h, OFErrorMsg m)
+                    throws IOException, SwitchStateException {
+                logErrorDisconnect(h, m);
+
+            }
+
+            @Override
+            void processOFPortStatus(OFChannelHandler h, OFPortStatus m)
+                    throws IOException, SwitchStateException {
+                unhandledMessageReceived(h, m);
+
+            }
+        },
+
+        /**
+         * We are waiting for a config reply message. Once we receive it
+         * we send a DescriptionStatsRequest to the switch.
+         * Next state: WAIT_DESCRIPTION_STAT_REPLY
+         */
+        WAIT_CONFIG_REPLY(false) {
+            @Override
+            @LogMessageDocs({
+                @LogMessageDoc(level = "WARN",
+                        message = "Config Reply from {switch} has "
+                                + "miss length set to {length}",
+                                explanation = "The controller requires that the switch "
+                                        + "use a miss length of 0xffff for correct "
+                                        + "function",
+                                        recommendation = "Use a different switch to ensure "
+                                                + "correct function")
+            })
+            void processOFGetConfigReply(OFChannelHandler h, OFGetConfigReply m)
+                    throws IOException {
+                if (m.getMissSendLen() == 0xffff) {
+                    log.trace("Config Reply from switch {} confirms "
+                            + "miss length set to 0xffff",
+                            h.getSwitchInfoString());
+                } else {
+                    // FIXME: we can't really deal with switches that don't send
+                    // full packets. Shouldn't we drop the connection here?
+                    log.warn("Config Reply from switch {} has"
+                            + "miss length set to {}",
+                            h.getSwitchInfoString(),
+                            m.getMissSendLen());
+                }
+                h.sendHandshakeDescriptionStatsRequest();
+                h.setState(WAIT_DESCRIPTION_STAT_REPLY);
+            }
+
+            @Override
+            void processOFBarrierReply(OFChannelHandler h, OFBarrierReply m) {
+                // do nothing;
+            }
+
+            @Override
+            void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply  m)
+                    throws IOException, SwitchStateException {
+                illegalMessageReceived(h, m);
+            }
+            @Override
+            void processOFStatisticsReply(OFChannelHandler h,
+                    OFStatsReply  m)
+                            throws IOException, SwitchStateException {
+                log.error("Received multipart(stats) message sub-type {}",
+                        m.getStatsType());
+                illegalMessageReceived(h, m);
+            }
+
+            @Override
+            void processOFError(OFChannelHandler h, OFErrorMsg m) {
+                logErrorDisconnect(h, m);
+            }
+
+            @Override
+            void processOFPortStatus(OFChannelHandler h, OFPortStatus m)
+                    throws IOException {
+                h.pendingPortStatusMsg.add(m);
+            }
+        },
+
+
+        /**
+         * We are waiting for a OFDescriptionStat message from the switch.
+         * Once we receive any stat message we try to parse it. If it's not
+         * a description stats message we disconnect. If its the expected
+         * description stats message, we:
+         *    - use the switch driver to bind the switch and get an IOFSwitch instance
+         *    - setup the IOFSwitch instance
+         *    - add switch controller and send the initial role
+         *      request to the switch.
+         * Next state: WAIT_INITIAL_ROLE
+         *      In the typical case, where switches support role request messages
+         *      the next state is where we expect the role reply message.
+         *      In the special case that where the switch does not support any kind
+         *      of role request messages, we don't send a role message, but we do
+         *      request mastership from the registry service. This controller
+         *      should become master once we hear back from the registry service.
+         * All following states will have a h.sw instance!
+         */
+        WAIT_DESCRIPTION_STAT_REPLY(false) {
+            @LogMessageDoc(message = "Switch {switch info} bound to class "
+                    + "{switch driver}, description {switch description}",
+                    explanation = "The specified switch has been bound to "
+                            + "a switch driver based on the switch description"
+                            + "received from the switch")
+            @Override
+            void processOFStatisticsReply(OFChannelHandler h, OFStatsReply m)
+                    throws SwitchStateException {
+                // Read description, if it has been updated
+                if (m.getStatsType() != OFStatsType.DESC) {
+                    log.warn("Expecting Description stats but received stats "
+                            + "type {} from {}. Ignoring ...", m.getStatsType(),
+                            h.channel.getRemoteAddress());
+                    return;
+                }
+                log.info("Received switch description reply from switch at {}",
+                        h.channel.getRemoteAddress());
+                OFDescStatsReply drep = (OFDescStatsReply) m;
+                // Here is where we differentiate between different kinds of switches
+                h.sw = h.controller.getOFSwitchInstance(drep, h.ofVersion);
+                // set switch information
+                h.sw.setOFVersion(h.ofVersion);
+                h.sw.setFeaturesReply(h.featuresReply);
+                h.sw.setPortDescReply(h.portDescReply);
+                h.sw.setConnected(true);
+                h.sw.setChannel(h.channel);
+
+                try {
+                    h.sw.setDebugCounterService(h.controller.getDebugCounter());
+                } catch (CounterException e) {
+                    h.counters.switchCounterRegistrationFailed
+                    .updateCounterNoFlush();
+                    log.warn("Could not register counters for switch {} ",
+                            h.getSwitchInfoString(), e);
+                }
+
+                log.info("Switch {} bound to class {}, description {}",
+                        new Object[] {h.sw, h.sw.getClass(), drep });
+                //Put switch in EQUAL mode until we hear back from the global registry
+                log.debug("Setting new switch {} to EQUAL and sending Role request",
+                        h.sw.getStringId());
+                h.setSwitchRole(Role.EQUAL);
+                try {
+                    boolean supportsRRMsg = h.roleChanger.sendRoleRequest(Role.EQUAL,
+                            RoleRecvStatus.MATCHED_CURRENT_ROLE);
+                    if (!supportsRRMsg) {
+                        log.warn("Switch {} does not support role request messages "
+                                + "of any kind. No role messages were sent. "
+                                + "This controller instance SHOULD become MASTER "
+                                + "from the registry process. ",
+                                h.getSwitchInfoString());
+                    }
+                    h.setState(WAIT_INITIAL_ROLE);
+                    // request control of switch from global registry -
+                    // necessary even if this is the only controller the
+                    // switch is connected to.
+                    h.controller.submitRegistryRequest(h.sw.getId());
+                } catch (IOException e) {
+                    log.error("Exception when sending role request: {} ",
+                            e.getMessage());
+                    // FIXME shouldn't we disconnect?
+                }
+            }
+
+            @Override
+            void processOFError(OFChannelHandler h, OFErrorMsg m) {
+                logErrorDisconnect(h, m);
+            }
+
+            @Override
+            void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply  m)
+                    throws IOException, SwitchStateException {
+                illegalMessageReceived(h, m);
+            }
+
+            @Override
+            void processOFPortStatus(OFChannelHandler h, OFPortStatus m)
+                    throws IOException {
+                h.pendingPortStatusMsg.add(m);
+            }
+        },
+
+        /**
+         * We are waiting for a role reply message in response to a role request
+         * sent after hearing back from the registry service -- OR -- we are
+         * just waiting to hear back from the registry service in the case that
+         * the switch does not support role messages. If completed successfully,
+         * the controller's role for this switch will be set here.
+         * Before we move to the state corresponding to the role, we allow the
+         * switch specific driver to complete its configuration. This configuration
+         * typically depends on the role the controller is playing for this switch.
+         * And so we set the switch role (for 'this' controller) before we start
+         * the driver-sub-handshake.
+         * Next State: WAIT_SWITCH_DRIVER_SUB_HANDSHAKE
+         */
+        WAIT_INITIAL_ROLE(false) {
+            @Override
+            void processOFError(OFChannelHandler h, OFErrorMsg m)
+                    throws SwitchStateException {
+                // role changer will ignore the error if it isn't for it
+                RoleRecvStatus rrstatus = h.roleChanger.deliverError(m);
+                if (rrstatus == RoleRecvStatus.OTHER_EXPECTATION) {
+                    logError(h, m);
+                }
+            }
+
+            @Override
+            void processOFExperimenter(OFChannelHandler h, OFExperimenter m)
+                    throws IOException, SwitchStateException {
+                Role role = extractNiciraRoleReply(h, m);
+                // If role == null it means the vendor (experimenter) message
+                // wasn't really a Nicira role reply. We ignore this case.
+                if (role != null) {
+                    RoleReplyInfo rri = new RoleReplyInfo(role, null, m.getXid());
+                    RoleRecvStatus rrs = h.roleChanger.deliverRoleReply(rri);
+                    if (rrs == RoleRecvStatus.MATCHED_SET_ROLE) {
+                        setRoleAndStartDriverHandshake(h, rri.getRole());
+                    } // else do nothing - wait for the correct expected reply
+                } else {
+                    unhandledMessageReceived(h, m);
+                }
+            }
+
+            @Override
+            void processOFRoleReply(OFChannelHandler h, OFRoleReply m)
+                    throws SwitchStateException, IOException {
+                RoleReplyInfo rri = extractOFRoleReply(h, m);
+                RoleRecvStatus rrs = h.roleChanger.deliverRoleReply(rri);
+                if (rrs == RoleRecvStatus.MATCHED_SET_ROLE) {
+                    setRoleAndStartDriverHandshake(h, rri.getRole());
+                } // else do nothing - wait for the correct expected reply
+            }
+
+            @Override
+            void handleUnsentRoleMessage(OFChannelHandler h, Role role,
+                    RoleRecvStatus expectation) throws IOException {
+                // typically this is triggered for a switch where role messages
+                // are not supported - we confirm that the role being set is
+                // master and move to the next state
+                if (expectation == RoleRecvStatus.MATCHED_SET_ROLE) {
+                    if (role == Role.MASTER) {
+                        setRoleAndStartDriverHandshake(h, role);
+                    } else {
+                        log.error("Expected MASTER role from registry for switch "
+                                + "which has no support for role-messages."
+                                + "Received {}. It is possible that this switch "
+                                + "is connected to other controllers, in which "
+                                + "case it should support role messages - not "
+                                + "moving forward.", role);
+                    }
+                } // else do nothing - wait to hear back from registry
+
+            }
+
+            private void setRoleAndStartDriverHandshake(OFChannelHandler h,
+                    Role role) throws IOException {
+                h.setSwitchRole(role);
+                h.sw.startDriverHandshake();
+                if (h.sw.isDriverHandshakeComplete()) {
+                    Role mySwitchRole = h.sw.getRole();
+                    if (mySwitchRole == Role.MASTER) {
+                        log.info("Switch-driver sub-handshake complete. "
+                                + "Activating switch {} with Role: MASTER",
+                                h.getSwitchInfoString());
+                        handlePendingPortStatusMessages(h); //before activation
+                        boolean success = h.controller.addActivatedMasterSwitch(
+                                h.sw.getId(), h.sw);
+                        if (!success) {
+                            disconnectDuplicate(h);
+                            return;
+                        }
+                        h.setState(MASTER);
+                    } else {
+                        log.info("Switch-driver sub-handshake complete. "
+                                + "Activating switch {} with Role: EQUAL",
+                                h.getSwitchInfoString());
+                        handlePendingPortStatusMessages(h); //before activation
+                        boolean success = h.controller.addActivatedEqualSwitch(
+                                h.sw.getId(), h.sw);
+                        if (!success) {
+                            disconnectDuplicate(h);
+                            return;
+                        }
+                        h.setState(EQUAL);
+                    }
+                } else {
+                    h.setState(WAIT_SWITCH_DRIVER_SUB_HANDSHAKE);
+                }
+            }
+
+            @Override
+            void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply  m)
+                    throws IOException, SwitchStateException {
+                illegalMessageReceived(h, m);
+            }
+
+            @Override
+            void processOFStatisticsReply(OFChannelHandler h, OFStatsReply m)
+                    throws SwitchStateException {
+                illegalMessageReceived(h, m);
+            }
+
+            @Override
+            void processOFPortStatus(OFChannelHandler h, OFPortStatus m)
+                    throws IOException, SwitchStateException {
+                h.pendingPortStatusMsg.add(m);
+
+            }
+        },
+
+        /**
+         * We are waiting for the respective switch driver to complete its
+         * configuration. Notice that we do not consider this to be part of the main
+         * switch-controller handshake. But we do consider it as a step that comes
+         * before we declare the switch as available to the controller.
+         * Next State: depends on the role of this controller for this switch - either
+         * MASTER or EQUAL.
+         */
+        WAIT_SWITCH_DRIVER_SUB_HANDSHAKE(true) {
+
+            @Override
+            void processOFError(OFChannelHandler h, OFErrorMsg m)
+                    throws IOException {
+                // will never be called. We override processOFMessage
+            }
+
+            @Override
+            void processOFMessage(OFChannelHandler h, OFMessage m)
+                    throws IOException {
+                if (m.getType() == OFType.ECHO_REQUEST) {
+                    processOFEchoRequest(h, (OFEchoRequest) m);
+                } else {
+                    // FIXME: other message to handle here?
+                    h.sw.processDriverHandshakeMessage(m);
+                    if (h.sw.isDriverHandshakeComplete()) {
+                        // consult the h.sw role and goto that state
+                        Role mySwitchRole = h.sw.getRole();
+                        if (mySwitchRole == Role.MASTER) {
+                            log.info("Switch-driver sub-handshake complete. "
+                                    + "Activating switch {} with Role: MASTER",
+                                    h.getSwitchInfoString());
+                            handlePendingPortStatusMessages(h); //before activation
+                            boolean success = h.controller.addActivatedMasterSwitch(
+                                    h.sw.getId(), h.sw);
+                            if (!success) {
+                                disconnectDuplicate(h);
+                                return;
+                            }
+                            h.setState(MASTER);
+                        } else {
+                            log.info("Switch-driver sub-handshake complete. "
+                                    + "Activating switch {} with Role: EQUAL",
+                                    h.getSwitchInfoString());
+                            handlePendingPortStatusMessages(h); //before activation
+                            boolean success = h.controller.addActivatedEqualSwitch(
+                                    h.sw.getId(), h.sw);
+                            if (!success) {
+                                disconnectDuplicate(h);
+                                return;
+                            }
+                            h.setState(EQUAL);
+                        }
+                    }
+                }
+            }
+
+            @Override
+            void processOFPortStatus(OFChannelHandler h, OFPortStatus m)
+                    throws IOException, SwitchStateException {
+                h.pendingPortStatusMsg.add(m);
+            }
+        },
+
+
+        /**
+         * This controller is in MASTER role for this switch. We enter this state
+         * after requesting and winning control from the global registry.
+         * The main handshake as well as the switch-driver sub-handshake
+         * is complete at this point.
+         * // XXX S reconsider below
+         * In the (near) future we may deterministically assign controllers to
+         * switches at startup.
+         * We only leave this state if the switch disconnects or
+         * if we send a role request for SLAVE /and/ receive the role reply for
+         * SLAVE.
+         */
+        MASTER(true) {
+            @LogMessageDoc(level = "WARN",
+                    message = "Received permission error from switch {} while"
+                            + "being master. Reasserting master role.",
+                            explanation = "The switch has denied an operation likely "
+                                    + "indicating inconsistent controller roles",
+                                    recommendation = "This situation can occurs transiently during role"
+                                            + " changes. If, however, the condition persists or happens"
+                                            + " frequently this indicates a role inconsistency. "
+                                            + LogMessageDoc.CHECK_CONTROLLER)
+            @Override
+            void processOFError(OFChannelHandler h, OFErrorMsg m)
+                    throws IOException, SwitchStateException {
+                // first check if the error msg is in response to a role-request message
+                RoleRecvStatus rrstatus = h.roleChanger.deliverError(m);
+                if (rrstatus != RoleRecvStatus.OTHER_EXPECTATION) {
+                    // rolechanger has handled the error message - we are done
+                    return;
+                }
+
+                // if we get here, then the error message is for something else
+                if (m.getErrType() == OFErrorType.BAD_REQUEST &&
+                        ((OFBadRequestErrorMsg) m).getCode() ==
+                        OFBadRequestCode.EPERM) {
+                    // We are the master controller and the switch returned
+                    // a permission error. This is a likely indicator that
+                    // the switch thinks we are slave. Reassert our
+                    // role
+                    // FIXME: this could be really bad during role transitions
+                    // if two controllers are master (even if its only for
+                    // a brief period). We might need to see if these errors
+                    // persist before we reassert
+                    h.counters.epermErrorWhileSwitchIsMaster.updateCounterWithFlush();
+                    log.warn("Received permission error from switch {} while" +
+                            "being master. Reasserting master role.",
+                            h.getSwitchInfoString());
+                    //h.controller.reassertRole(h, Role.MASTER);
+                    // XXX S reassert in role changer or reconsider if all this
+                    // stuff is really needed
+                } else if (m.getErrType() == OFErrorType.FLOW_MOD_FAILED &&
+                        ((OFFlowModFailedErrorMsg) m).getCode() ==
+                        OFFlowModFailedCode.ALL_TABLES_FULL) {
+                    h.sw.setTableFull(true);
+                } else {
+                    logError(h, m);
+                }
+                h.dispatchMessage(m);
+            }
+
+            @Override
+            void processOFStatisticsReply(OFChannelHandler h,
+                    OFStatsReply m) {
+                h.sw.deliverStatisticsReply(m);
+            }
+
+            @Override
+            void processOFExperimenter(OFChannelHandler h, OFExperimenter m)
+                    throws IOException, SwitchStateException {
+                Role role = extractNiciraRoleReply(h, m);
+                if (role == null) {
+                    // The message wasn't really a Nicira role reply. We just
+                    // dispatch it to the OFMessage listeners in this case.
+                    h.dispatchMessage(m);
+                    return;
+                }
+
+                RoleRecvStatus rrs = h.roleChanger.deliverRoleReply(
+                        new RoleReplyInfo(role, null, m.getXid()));
+                if (rrs == RoleRecvStatus.MATCHED_SET_ROLE) {
+                    checkAndSetRoleTransition(h, role);
+                }
+            }
+
+            @Override
+            void processOFRoleReply(OFChannelHandler h, OFRoleReply m)
+                    throws SwitchStateException, IOException {
+                RoleReplyInfo rri = extractOFRoleReply(h, m);
+                RoleRecvStatus rrs = h.roleChanger.deliverRoleReply(rri);
+                if (rrs == RoleRecvStatus.MATCHED_SET_ROLE) {
+                    checkAndSetRoleTransition(h, rri.getRole());
+                }
+            }
+
+            @Override
+            void processOFPortStatus(OFChannelHandler h, OFPortStatus m)
+                    throws IOException, SwitchStateException {
+                handlePortStatusMessage(h, m, true);
+                h.dispatchMessage(m);
+            }
+
+            @Override
+            void processOFPacketIn(OFChannelHandler h, OFPacketIn m)
+                    throws IOException {
+                h.dispatchMessage(m);
+            }
+
+            @Override
+            void processOFFlowRemoved(OFChannelHandler h,
+                    OFFlowRemoved m) throws IOException {
+                h.dispatchMessage(m);
+            }
+
+            @Override
+            void processOFBarrierReply(OFChannelHandler h, OFBarrierReply m)
+                    throws IOException {
+                h.dispatchMessage(m);
+            }
+
+        },
+
+        /**
+         * This controller is in EQUAL role for this switch. We enter this state
+         * after some /other/ controller instance wins mastership-role over this
+         * switch. The EQUAL role can be considered the same as the SLAVE role
+         * if this controller does NOT send commands or packets to the switch.
+         * This should always be true for OF1.0 switches. XXX S need to enforce.
+         *
+         * For OF1.3 switches, choosing this state as EQUAL instead of SLAVE,
+         * gives us the flexibility that if an app wants to send commands/packets
+         * to switches, it can, even thought it is running on a controller instance
+         * that is not in a MASTER role for this switch. Of course, it is the job
+         * of the app to ensure that commands/packets sent by this (EQUAL) controller
+         * instance does not clash/conflict with commands/packets sent by the MASTER
+         * controller for this switch. Neither the controller instances, nor the
+         * switch provides any kind of resolution mechanism should conflicts occur.
+         */
+        EQUAL(true) {
+            @Override
+            void processOFError(OFChannelHandler h, OFErrorMsg m)
+                    throws IOException, SwitchStateException {
+                // role changer will ignore the error if it isn't for it
+                RoleRecvStatus rrstatus = h.roleChanger.deliverError(m);
+                if (rrstatus == RoleRecvStatus.OTHER_EXPECTATION) {
+                    logError(h, m);
+                    h.dispatchMessage(m);
+                }
+            }
+
+            @Override
+            void processOFStatisticsReply(OFChannelHandler h,
+                    OFStatsReply m) {
+                h.sw.deliverStatisticsReply(m);
+            }
+
+            @Override
+            void processOFExperimenter(OFChannelHandler h, OFExperimenter m)
+                    throws IOException, SwitchStateException {
+                Role role = extractNiciraRoleReply(h, m);
+                // If role == null it means the message wasn't really a
+                // Nicira role reply. We ignore it in this state.
+                if (role != null) {
+                    RoleRecvStatus rrs = h.roleChanger.deliverRoleReply(
+                            new RoleReplyInfo(role, null, m.getXid()));
+                    if (rrs == RoleRecvStatus.MATCHED_SET_ROLE) {
+                        checkAndSetRoleTransition(h, role);
+                    }
+                } else {
+                    unhandledMessageReceived(h, m);
+                }
+            }
+
+            @Override
+            void processOFRoleReply(OFChannelHandler h, OFRoleReply m)
+                    throws SwitchStateException, IOException {
+                RoleReplyInfo rri = extractOFRoleReply(h, m);
+                RoleRecvStatus rrs = h.roleChanger.deliverRoleReply(rri);
+                if (rrs == RoleRecvStatus.MATCHED_SET_ROLE) {
+                    checkAndSetRoleTransition(h, rri.getRole());
+                }
+            }
+
+            // XXX S needs more handlers for 1.3 switches in equal role
+
+            @Override
+            void processOFPortStatus(OFChannelHandler h, OFPortStatus m)
+                    throws IOException, SwitchStateException {
+                handlePortStatusMessage(h, m, true);
+            }
+
+            @Override
+            @LogMessageDoc(level = "WARN",
+            message = "Received PacketIn from switch {} while "
+                    + "being slave. Reasserting slave role.",
+                    explanation = "The switch has receive a PacketIn despite being "
+                            + "in slave role indicating inconsistent controller roles",
+                            recommendation = "This situation can occurs transiently during role"
+                                    + " changes. If, however, the condition persists or happens"
+                                    + " frequently this indicates a role inconsistency. "
+                                    + LogMessageDoc.CHECK_CONTROLLER)
+            void processOFPacketIn(OFChannelHandler h, OFPacketIn m) throws IOException {
+                // we don't expect packetIn while slave, reassert we are slave
+                h.counters.packetInWhileSwitchIsSlave.updateCounterNoFlush();
+                log.warn("Received PacketIn from switch {} while" +
+                        "being slave. Reasserting slave role.", h.sw);
+                //h.controller.reassertRole(h, Role.SLAVE);
+                // XXX reassert in role changer
+            }
+        };
+
+        private final boolean handshakeComplete;
+        ChannelState(boolean handshakeComplete) {
+            this.handshakeComplete = handshakeComplete;
+        }
+
+        /**
+         * Is this a state in which the handshake has completed?
+         * @return true if the handshake is complete
+         */
+        public boolean isHandshakeComplete() {
+            return handshakeComplete;
+        }
+
+        /**
+         * Get a string specifying the switch connection, state, and
+         * message received. To be used as message for SwitchStateException
+         * or log messages
+         * @param h The channel handler (to get switch information_
+         * @param m The OFMessage that has just been received
+         * @param details A string giving more details about the exact nature
+         * of the problem.
+         * @return
+         */
+        // needs to be protected because enum members are actually subclasses
+        protected String getSwitchStateMessage(OFChannelHandler h,
+                OFMessage m,
+                String details) {
+            return String.format("Switch: [%s], State: [%s], received: [%s]"
+                    + ", details: %s",
+                    h.getSwitchInfoString(),
+                    this.toString(),
+                    m.getType().toString(),
+                    details);
+        }
+
+        /**
+         * We have an OFMessage we didn't expect given the current state and
+         * we want to treat this as an error.
+         * We currently throw an exception that will terminate the connection
+         * However, we could be more forgiving
+         * @param h the channel handler that received the message
+         * @param m the message
+         * @throws SwitchStateException
+         * @throws SwitchStateExeption we always through the execption
+         */
+        // needs to be protected because enum members are acutally subclasses
+        protected void illegalMessageReceived(OFChannelHandler h, OFMessage m)
+                throws SwitchStateException {
+            String msg = getSwitchStateMessage(h, m,
+                    "Switch should never send this message in the current state");
+            throw new SwitchStateException(msg);
+
+        }
+
+        /**
+         * We have an OFMessage we didn't expect given the current state and
+         * we want to ignore the message.
+         * @param h the channel handler the received the message
+         * @param m the message
+         */
+        protected void unhandledMessageReceived(OFChannelHandler h,
+                OFMessage m) {
+            h.counters.unhandledMessage.updateCounterNoFlush();
+            if (log.isDebugEnabled()) {
+                String msg = getSwitchStateMessage(h, m,
+                        "Ignoring unexpected message");
+                log.debug(msg);
+            }
+        }
+
+        /**
+         * Log an OpenFlow error message from a switch.
+         * @param sw The switch that sent the error
+         * @param error The error message
+         */
+        @LogMessageDoc(level = "ERROR",
+                message = "Error {error type} {error code} from {switch} "
+                        + "in state {state}",
+                        explanation = "The switch responded with an unexpected error"
+                                + "to an OpenFlow message from the controller",
+                                recommendation = "This could indicate improper network operation. "
+                                        + "If the problem persists restarting the switch and "
+                                        + "controller may help."
+                )
+        protected void logError(OFChannelHandler h, OFErrorMsg error) {
+            log.error("{} from switch {} in state {}",
+                    new Object[] {
+                    error,
+                    h.getSwitchInfoString(),
+                    this.toString()});
+        }
+
+        /**
+         * Log an OpenFlow error message from a switch and disconnect the
+         * channel.
+         *
+         * @param h the IO channel for this switch.
+         * @param error The error message
+         */
+        protected void logErrorDisconnect(OFChannelHandler h, OFErrorMsg error) {
+            logError(h, error);
+            h.channel.disconnect();
+        }
+
+        /**
+         * log an error message for a duplicate dpid and disconnect this channel.
+         * @param h the IO channel for this switch.
+         */
+        protected void disconnectDuplicate(OFChannelHandler h) {
+            log.error("Duplicated dpid or incompleted cleanup - "
+                    + "disconnecting channel {}", h.getSwitchInfoString());
+            h.duplicateDpidFound = Boolean.TRUE;
+            h.channel.disconnect();
+        }
+
+        /**
+         * Extract the role from an OFVendor message.
+         *
+         * Extract the role from an OFVendor message if the message is a
+         * Nicira role reply. Otherwise return null.
+         *
+         * @param h The channel handler receiving the message
+         * @param vendorMessage The vendor message to parse.
+         * @return The role in the message if the message is a Nicira role
+         * reply, null otherwise.
+         * @throws SwitchStateException If the message is a Nicira role reply
+         * but the numeric role value is unknown.
+         */
+        protected Role extractNiciraRoleReply(OFChannelHandler h,
+                OFExperimenter experimenterMsg) throws SwitchStateException {
+            int vendor = (int) experimenterMsg.getExperimenter();
+            if (vendor != 0x2320) {
+                return null;
+            }
+            OFNiciraControllerRoleReply nrr =
+                    (OFNiciraControllerRoleReply) experimenterMsg;
+
+            Role role = null;
+            OFNiciraControllerRole ncr = nrr.getRole();
+            switch(ncr) {
+            case ROLE_MASTER:
+                role = Role.MASTER;
+                break;
+            case ROLE_OTHER:
+                role = Role.EQUAL;
+                break;
+            case ROLE_SLAVE:
+                role = Role.SLAVE;
+                break;
+            default: //handled below
+            }
+
+            if (role == null) {
+                String msg = String.format("Switch: [%s], State: [%s], "
+                        + "received NX_ROLE_REPLY with invalid role "
+                        + "value %s",
+                        h.getSwitchInfoString(),
+                        this.toString(),
+                        nrr.getRole());
+                throw new SwitchStateException(msg);
+            }
+            return role;
+        }
+
+        /**
+         * Helper class returns role reply information in the format understood
+         * by the controller.
+         */
+        protected static class RoleReplyInfo {
+            private Role role;
+            private U64 genId;
+            private long xid;
+
+            RoleReplyInfo(Role role, U64 genId, long xid) {
+                this.role = role;
+                this.genId = genId;
+                this.xid = xid;
+            }
+            public Role getRole() { return role; }
+            public U64 getGenId() { return genId; }
+            public long getXid() { return xid; }
+            @Override
+            public String toString() {
+                return "[Role:" + role + " GenId:" + genId + " Xid:" + xid + "]";
+            }
+        }
+
+        /**
+         * Extract the role information from an OF1.3 Role Reply Message.
+         * @param h
+         * @param rrmsg
+         * @return RoleReplyInfo object
+         * @throws SwitchStateException
+         */
+        protected RoleReplyInfo extractOFRoleReply(OFChannelHandler h,
+                OFRoleReply rrmsg) throws SwitchStateException {
+            OFControllerRole cr = rrmsg.getRole();
+            Role role = null;
+            switch(cr) {
+            case ROLE_EQUAL:
+                role = Role.EQUAL;
+                break;
+            case ROLE_MASTER:
+                role = Role.MASTER;
+                break;
+            case ROLE_SLAVE:
+                role = Role.SLAVE;
+                break;
+            case ROLE_NOCHANGE: // switch should send current role
+            default:
+                String msg = String.format("Unknown controller role %s "
+                        + "received from switch %s", cr, h.sw);
+                throw new SwitchStateException(msg);
+            }
+
+            return new RoleReplyInfo(role, rrmsg.getGenerationId(), rrmsg.getXid());
+        }
+
+        /**
+         * Handles all pending port status messages before a switch is declared
+         * activated in MASTER or EQUAL role. Note that since this handling
+         * precedes the activation (and therefore notification to IOFSwitchListerners)
+         * the changes to ports will already be visible once the switch is
+         * activated. As a result, no notifications are sent out for these
+         * pending portStatus messages.
+         * @param h
+         * @throws SwitchStateException
+         */
+        protected void handlePendingPortStatusMessages(OFChannelHandler h) {
+            try {
+                handlePendingPortStatusMessages(h, 0);
+            } catch (SwitchStateException e) {
+                log.error(e.getMessage());
+            }
+        }
+
+        private void handlePendingPortStatusMessages(OFChannelHandler h, int index)
+                throws SwitchStateException {
+            if (h.sw == null) {
+                String msg = "State machine error: switch is null. Should never " +
+                        "happen";
+                throw new SwitchStateException(msg);
+            }
+            ArrayList<OFPortStatus> temp  = new ArrayList<OFPortStatus>();
+            for (OFPortStatus ps: h.pendingPortStatusMsg) {
+                temp.add(ps);
+                handlePortStatusMessage(h, ps, false);
+            }
+            temp.clear();
+            // expensive but ok - we don't expect too many port-status messages
+            // note that we cannot use clear(), because of the reasons below
+            h.pendingPortStatusMsg.removeAll(temp);
+            // the iterator above takes a snapshot of the list - so while we were
+            // dealing with the pending port-status messages, we could have received
+            // newer ones. Handle them recursively, but break the recursion after
+            // five steps to avoid an attack.
+            if (!h.pendingPortStatusMsg.isEmpty() && ++index < 5) {
+                handlePendingPortStatusMessages(h, index);
+            }
+        }
+
+        /**
+         * Handle a port status message.
+         *
+         * Handle a port status message by updating the port maps in the
+         * IOFSwitch instance and notifying Controller about the change so
+         * it can dispatch a switch update.
+         *
+         * @param h The OFChannelHhandler that received the message
+         * @param m The PortStatus message we received
+         * @param doNotify if true switch port changed events will be
+         * dispatched
+         * @throws SwitchStateException
+         *
+         */
+        protected void handlePortStatusMessage(OFChannelHandler h, OFPortStatus m,
+                boolean doNotify) throws SwitchStateException {
+            if (h.sw == null) {
+                String msg = getSwitchStateMessage(h, m,
+                        "State machine error: switch is null. Should never " +
+                        "happen");
+                throw new SwitchStateException(msg);
+            }
+
+            Collection<PortChangeEvent> changes = h.sw.processOFPortStatus(m);
+            if (doNotify) {
+                for (PortChangeEvent ev: changes) {
+                    h.controller.notifyPortChanged(h.sw.getId(), ev.port, ev.type);
+                }
+            }
+        }
+
+        /**
+         * Checks if the role received (from the role-reply msg) is different
+         * from the existing role in the IOFSwitch object for this controller.
+         * If so, it transitions the controller to the new role. Note that
+         * the caller should have already verified that the role-reply msg
+         * received was in response to a role-request msg sent out by this
+         * controller after hearing from the registry service.
+         *
+         * @param h the ChannelHandler that received the message
+         * @param role the role in the recieved role reply message
+         */
+        protected void checkAndSetRoleTransition(OFChannelHandler h, Role role) {
+            // we received a role-reply in response to a role message
+            // sent after hearing from the registry service. It is
+            // possible that the role of this controller instance for
+            // this switch has changed:
+            // for 1.0 switch: from MASTER to SLAVE
+            // for 1.3 switch: from MASTER to EQUAL
+            if ((h.sw.getRole() == Role.MASTER && role == Role.SLAVE) ||
+                    (h.sw.getRole() == Role.MASTER && role == Role.EQUAL)) {
+                // the mastership has changed
+                h.sw.setRole(role);
+                h.setState(EQUAL);
+                h.controller.transitionToEqualSwitch(h.sw.getId());
+                return;
+            }
+
+            // or for both 1.0 and 1.3 switches from EQUAL to MASTER.
+            // note that for 1.0, even though we mean SLAVE,
+            // internally we call the role EQUAL.
+            if (h.sw.getRole() == Role.EQUAL && role == Role.MASTER) {
+                // the mastership has changed
+                h.sw.setRole(role);
+                h.setState(MASTER);
+                h.controller.transitionToMasterSwitch(h.sw.getId());
+                return;
+            }
+        }
+
+        /**
+         * Process an OF message received on the channel and
+         * update state accordingly.
+         *
+         * The main "event" of the state machine. Process the received message,
+         * send follow up message if required and update state if required.
+         *
+         * Switches on the message type and calls more specific event handlers
+         * for each individual OF message type. If we receive a message that
+         * is supposed to be sent from a controller to a switch we throw
+         * a SwitchStateExeption.
+         *
+         * The more specific handlers can also throw SwitchStateExceptions
+         *
+         * @param h The OFChannelHandler that received the message
+         * @param m The message we received.
+         * @throws SwitchStateException
+         * @throws IOException
+         */
+        void processOFMessage(OFChannelHandler h, OFMessage m)
+                throws IOException, SwitchStateException {
+            h.roleChanger.checkTimeout();
+            switch(m.getType()) {
+            case HELLO:
+                processOFHello(h, (OFHello) m);
+                break;
+            case BARRIER_REPLY:
+                processOFBarrierReply(h, (OFBarrierReply) m);
+                break;
+            case ECHO_REPLY:
+                processOFEchoReply(h, (OFEchoReply) m);
+                break;
+            case ECHO_REQUEST:
+                processOFEchoRequest(h, (OFEchoRequest) m);
+                break;
+            case ERROR:
+                processOFError(h, (OFErrorMsg) m);
+                break;
+            case FEATURES_REPLY:
+                processOFFeaturesReply(h, (OFFeaturesReply) m);
+                break;
+            case FLOW_REMOVED:
+                processOFFlowRemoved(h, (OFFlowRemoved) m);
+                break;
+            case GET_CONFIG_REPLY:
+                processOFGetConfigReply(h, (OFGetConfigReply) m);
+                break;
+            case PACKET_IN:
+                processOFPacketIn(h, (OFPacketIn) m);
+                break;
+            case PORT_STATUS:
+                processOFPortStatus(h, (OFPortStatus) m);
+                break;
+            case QUEUE_GET_CONFIG_REPLY:
+                processOFQueueGetConfigReply(h, (OFQueueGetConfigReply) m);
+                break;
+            case STATS_REPLY: // multipart_reply in 1.3
+            processOFStatisticsReply(h, (OFStatsReply) m);
+            break;
+            case EXPERIMENTER:
+                processOFExperimenter(h, (OFExperimenter) m);
+                break;
+            case ROLE_REPLY:
+                processOFRoleReply(h, (OFRoleReply) m);
+                break;
+            case GET_ASYNC_REPLY:
+                processOFGetAsyncReply(h, (OFAsyncGetReply) m);
+                break;
+
+                // The following messages are sent to switches. The controller
+                // should never receive them
+            case SET_CONFIG:
+            case GET_CONFIG_REQUEST:
+            case PACKET_OUT:
+            case PORT_MOD:
+            case QUEUE_GET_CONFIG_REQUEST:
+            case BARRIER_REQUEST:
+            case STATS_REQUEST: // multipart request in 1.3
+            case FEATURES_REQUEST:
+            case FLOW_MOD:
+            case GROUP_MOD:
+            case TABLE_MOD:
+            case GET_ASYNC_REQUEST:
+            case SET_ASYNC:
+            case METER_MOD:
+            default:
+                illegalMessageReceived(h, m);
+                break;
+            }
+        }
+
+        /*-----------------------------------------------------------------
+         * Default implementation for message handlers in any state.
+         *
+         * Individual states must override these if they want a behavior
+         * that differs from the default.
+         *
+         * In general, these handlers simply ignore the message and do
+         * nothing.
+         *
+         * There are some exceptions though, since some messages really
+         * are handled the same way in every state (e.g., ECHO_REQUST) or
+         * that are only valid in a single state (e.g., HELLO, GET_CONFIG_REPLY
+         -----------------------------------------------------------------*/
+
+        void processOFHello(OFChannelHandler h, OFHello m)
+                throws IOException, SwitchStateException {
+            // we only expect hello in the WAIT_HELLO state
+            illegalMessageReceived(h, m);
+        }
+
+        void processOFBarrierReply(OFChannelHandler h, OFBarrierReply m)
+                throws IOException {
+            // Silently ignore.
+        }
+
+        void processOFEchoRequest(OFChannelHandler h, OFEchoRequest m)
+                throws IOException {
+            if (h.ofVersion == null) {
+                log.error("No OF version set for {}. Not sending Echo REPLY",
+                        h.channel.getRemoteAddress());
+                return;
+            }
+            OFFactory factory = (h.ofVersion == OFVersion.OF_13) ?
+                    h.controller.getOFMessageFactory13() : h.controller.getOFMessageFactory10();
+            OFEchoReply reply = factory
+                    .buildEchoReply()
+                    .setXid(m.getXid())
+                    .setData(m.getData())
+                    .build();
+            h.channel.write(Collections.singletonList(reply));
+        }
+
+        void processOFEchoReply(OFChannelHandler h, OFEchoReply m)
+                throws IOException {
+            // Do nothing with EchoReplies !!
+        }
+
+        // no default implementation for OFError
+        // every state must override it
+        abstract void processOFError(OFChannelHandler h, OFErrorMsg m)
+                throws IOException, SwitchStateException;
+
+
+        void processOFFeaturesReply(OFChannelHandler h, OFFeaturesReply  m)
+                throws IOException, SwitchStateException {
+            unhandledMessageReceived(h, m);
+        }
+
+        void processOFFlowRemoved(OFChannelHandler h, OFFlowRemoved m)
+                throws IOException {
+            unhandledMessageReceived(h, m);
+        }
+
+        void processOFGetConfigReply(OFChannelHandler h, OFGetConfigReply m)
+                throws IOException, SwitchStateException {
+            // we only expect config replies in the WAIT_CONFIG_REPLY state
+            illegalMessageReceived(h, m);
+        }
+
+        void processOFPacketIn(OFChannelHandler h, OFPacketIn m)
+                throws IOException {
+            unhandledMessageReceived(h, m);
+        }
+
+        // no default implementation. Every state needs to handle it.
+        abstract void processOFPortStatus(OFChannelHandler h, OFPortStatus m)
+                throws IOException, SwitchStateException;
+
+        void processOFQueueGetConfigReply(OFChannelHandler h,
+                OFQueueGetConfigReply m)
+                        throws IOException {
+            unhandledMessageReceived(h, m);
+        }
+
+        void processOFStatisticsReply(OFChannelHandler h, OFStatsReply m)
+                throws IOException, SwitchStateException {
+            unhandledMessageReceived(h, m);
+        }
+
+        void processOFExperimenter(OFChannelHandler h, OFExperimenter m)
+                throws IOException, SwitchStateException {
+            // TODO: it might make sense to parse the vendor message here
+            // into the known vendor messages we support and then call more
+            // specific event handlers
+            unhandledMessageReceived(h, m);
+        }
+
+        void processOFRoleReply(OFChannelHandler h, OFRoleReply m)
+                throws SwitchStateException, IOException {
+            unhandledMessageReceived(h, m);
+        }
+
+        void processOFGetAsyncReply(OFChannelHandler h,
+                OFAsyncGetReply m) {
+            unhandledMessageReceived(h, m);
+        }
+
+        void handleUnsentRoleMessage(OFChannelHandler h, Role role,
+                RoleRecvStatus expectation) throws IOException {
+            // do nothing in most states
+        }
+    }
+
+
+
+    //*************************
+    //  Channel handler methods
+    //*************************
+
+    @Override
+    @LogMessageDoc(message = "New switch connection from {ip address}",
+    explanation = "A new switch has connected from the "
+            + "specified IP address")
+    public void channelConnected(ChannelHandlerContext ctx,
+            ChannelStateEvent e) throws Exception {
+        counters.switchConnected.updateCounterWithFlush();
+        channel = e.getChannel();
+        log.info("New switch connection from {}",
+                channel.getRemoteAddress());
+        sendHandshakeHelloMessage();
+        setState(ChannelState.WAIT_HELLO);
+    }
+
+    @Override
+    @LogMessageDoc(message = "Disconnected switch {switch information}",
+    explanation = "The specified switch has disconnected.")
+    public void channelDisconnected(ChannelHandlerContext ctx,
+            ChannelStateEvent e) throws Exception {
+        log.info("Switch disconnected callback for sw:{}. Cleaning up ...",
+                getSwitchInfoString());
+        if (thisdpid != 0) {
+            if (!duplicateDpidFound) {
+                // if the disconnected switch (on this ChannelHandler)
+                // was not one with a duplicate-dpid, it is safe to remove all
+                // state for it at the controller. Notice that if the disconnected
+                // switch was a duplicate-dpid, calling the method below would clear
+                // all state for the original switch (with the same dpid),
+                // which we obviously don't want.
+                controller.removeConnectedSwitch(thisdpid);
+            } else {
+                // A duplicate was disconnected on this ChannelHandler,
+                // this is the same switch reconnecting, but the original state was
+                // not cleaned up - XXX check liveness of original ChannelHandler
+                duplicateDpidFound = Boolean.FALSE;
+            }
+        } else {
+            log.warn("no dpid in channelHandler registered for "
+                    + "disconnected switch {}", getSwitchInfoString());
+        }
+    }
+
+    @Override
+    @LogMessageDocs({
+        @LogMessageDoc(level = "ERROR",
+                message = "Disconnecting switch {switch} due to read timeout",
+                explanation = "The connected switch has failed to send any "
+                        + "messages or respond to echo requests",
+                recommendation = LogMessageDoc.CHECK_SWITCH),
+                        @LogMessageDoc(level = "ERROR",
+                message = "Disconnecting switch {switch}: failed to "
+                        + "complete handshake",
+                explanation = "The switch did not respond correctly "
+                        + "to handshake messages",
+                recommendation = LogMessageDoc.CHECK_SWITCH),
+        @LogMessageDoc(level = "ERROR",
+                message = "Disconnecting switch {switch} due to IO Error: {}",
+                explanation = "There was an error communicating with the switch",
+                recommendation = LogMessageDoc.CHECK_SWITCH),
+        @LogMessageDoc(level = "ERROR",
+                message = "Disconnecting switch {switch} due to switch "
+                        + "state error: {error}",
+                explanation = "The switch sent an unexpected message",
+                recommendation = LogMessageDoc.CHECK_SWITCH),
+        @LogMessageDoc(level = "ERROR",
+                message = "Disconnecting switch {switch} due to "
+                          + "message parse failure",
+                explanation = "Could not parse a message from the switch",
+                recommendation = LogMessageDoc.CHECK_SWITCH),
+        @LogMessageDoc(level = "ERROR",
+                message = "Terminating controller due to storage exception",
+                explanation = Controller.ERROR_DATABASE,
+                recommendation = LogMessageDoc.CHECK_CONTROLLER),
+        @LogMessageDoc(level = "ERROR",
+                message = "Could not process message: queue full",
+                explanation = "OpenFlow messages are arriving faster than "
+                            + "the controller can process them.",
+                recommendation = LogMessageDoc.CHECK_CONTROLLER),
+        @LogMessageDoc(level = "ERROR",
+                message = "Error while processing message "
+                        + "from switch {switch} {cause}",
+                explanation = "An error occurred processing the switch message",
+                recommendation = LogMessageDoc.GENERIC_ACTION)
+    })
+    public void exceptionCaught(ChannelHandlerContext ctx, ExceptionEvent e)
+            throws Exception {
+        if (e.getCause() instanceof ReadTimeoutException) {
+            // switch timeout
+            log.error("Disconnecting switch {} due to read timeout",
+                    getSwitchInfoString());
+            counters.switchDisconnectReadTimeout.updateCounterWithFlush();
+            ctx.getChannel().close();
+        } else if (e.getCause() instanceof HandshakeTimeoutException) {
+            log.error("Disconnecting switch {}: failed to complete handshake",
+                    getSwitchInfoString());
+            counters.switchDisconnectHandshakeTimeout.updateCounterWithFlush();
+            ctx.getChannel().close();
+        } else if (e.getCause() instanceof ClosedChannelException) {
+            log.debug("Channel for sw {} already closed", getSwitchInfoString());
+        } else if (e.getCause() instanceof IOException) {
+            log.error("Disconnecting switch {} due to IO Error: {}",
+                    getSwitchInfoString(), e.getCause().getMessage());
+            if (log.isDebugEnabled()) {
+                // still print stack trace if debug is enabled
+                log.debug("StackTrace for previous Exception: ", e.getCause());
+            }
+            counters.switchDisconnectIOError.updateCounterWithFlush();
+            ctx.getChannel().close();
+        } else if (e.getCause() instanceof SwitchStateException) {
+            log.error("Disconnecting switch {} due to switch state error: {}",
+                    getSwitchInfoString(), e.getCause().getMessage());
+            if (log.isDebugEnabled()) {
+                // still print stack trace if debug is enabled
+                log.debug("StackTrace for previous Exception: ", e.getCause());
+            }
+            counters.switchDisconnectSwitchStateException.updateCounterWithFlush();
+            ctx.getChannel().close();
+        } else if (e.getCause() instanceof OFParseError) {
+            log.error("Disconnecting switch "
+                    + getSwitchInfoString() +
+                    " due to message parse failure",
+                    e.getCause());
+            counters.switchDisconnectParseError.updateCounterWithFlush();
+            ctx.getChannel().close();
+        } else if (e.getCause() instanceof RejectedExecutionException) {
+            log.warn("Could not process message: queue full");
+            counters.rejectedExecutionException.updateCounterWithFlush();
+        } else {
+            log.error("Error while processing message from switch "
+                    + getSwitchInfoString()
+                    + "state " + this.state, e.getCause());
+            counters.switchDisconnectOtherException.updateCounterWithFlush();
+            ctx.getChannel().close();
+        }
+    }
+
+    @Override
+    public String toString() {
+        return getSwitchInfoString();
+    }
+
+    @Override
+    public void channelIdle(ChannelHandlerContext ctx, IdleStateEvent e)
+            throws Exception {
+        OFFactory factory = (ofVersion == OFVersion.OF_13) ? factory13 : factory10;
+        OFMessage m = factory.buildEchoRequest().build();
+        log.info("Sending Echo Request on idle channel: {}",
+                e.getChannel().getPipeline().getLast().toString());
+        e.getChannel().write(Collections.singletonList(m));
+        // XXX S some problems here -- echo request has no transaction id, and
+        // echo reply is not correlated to the echo request.
+    }
+
+    @Override
+    public void messageReceived(ChannelHandlerContext ctx, MessageEvent e)
+            throws Exception {
+        if (e.getMessage() instanceof List) {
+            @SuppressWarnings("unchecked")
+            List<OFMessage> msglist = (List<OFMessage>) e.getMessage();
+
+
+            for (OFMessage ofm : msglist) {
+                counters.messageReceived.updateCounterNoFlush();
+                // Do the actual packet processing
+                state.processOFMessage(this, ofm);
+            }
+        } else {
+            counters.messageReceived.updateCounterNoFlush();
+            state.processOFMessage(this, (OFMessage) e.getMessage());
+        }
+    }
+
+
+
+    //*************************
+    //  Channel utility methods
+    //*************************
+
+    /**
+     * Is this a state in which the handshake has completed?
+     * @return true if the handshake is complete
+     */
+    public boolean isHandshakeComplete() {
+        return this.state.isHandshakeComplete();
+    }
+
+    private void dispatchMessage(OFMessage m) throws IOException {
+        sw.handleMessage(m);
+    }
+
+    /**
+     * Return a string describing this switch based on the already available
+     * information (DPID and/or remote socket).
+     * @return
+     */
+    private String getSwitchInfoString() {
+        if (sw != null) {
+            return sw.toString();
+        }
+        String channelString;
+        if (channel == null || channel.getRemoteAddress() == null) {
+            channelString = "?";
+        } else {
+            channelString = channel.getRemoteAddress().toString();
+        }
+        String dpidString;
+        if (featuresReply == null) {
+            dpidString = "?";
+        } else {
+            dpidString = featuresReply.getDatapathId().toString();
+        }
+        return String.format("[%s DPID[%s]]", channelString, dpidString);
+    }
+
+    /**
+     * Update the channels state. Only called from the state machine.
+     * TODO: enforce restricted state transitions
+     * @param state
+     */
+    private void setState(ChannelState state) {
+        this.state = state;
+    }
+
+    /**
+     * Send hello message to the switch using the handshake transactions ids.
+     * @throws IOException
+     */
+    private void sendHandshakeHelloMessage() throws IOException {
+        // The OF protocol requires us to start things off by sending the highest
+        // version of the protocol supported.
+
+        // bitmap represents OF1.0 (ofp_version=0x01) and OF1.3 (ofp_version=0x04)
+        // see Sec. 7.5.1 of the OF1.3.4 spec
+        U32 bitmap = U32.ofRaw(0x00000012);
+        OFHelloElem hem = factory13.buildHelloElemVersionbitmap()
+                .setBitmaps(Collections.singletonList(bitmap))
+                .build();
+        OFMessage.Builder mb = factory13.buildHello()
+                .setXid(this.handshakeTransactionIds--)
+                .setElements(Collections.singletonList(hem));
+        log.info("Sending OF_13 Hello to {}", channel.getRemoteAddress());
+        channel.write(Collections.singletonList(mb.build()));
+    }
+
+    /**
+     * Send featuresRequest msg to the switch using the handshake transactions ids.
+     * @throws IOException
+     */
+    private void sendHandshakeFeaturesRequestMessage() throws IOException {
+        OFFactory factory = (ofVersion == OFVersion.OF_13) ? factory13 : factory10;
+        OFMessage m = factory.buildFeaturesRequest()
+                .setXid(this.handshakeTransactionIds--)
+                .build();
+        channel.write(Collections.singletonList(m));
+    }
+
+    private void setSwitchRole(Role role) {
+        sw.setRole(role);
+    }
+
+    /**
+     * Send the configuration requests to tell the switch we want full
+     * packets.
+     * @throws IOException
+     */
+    private void sendHandshakeSetConfig() throws IOException {
+        OFFactory factory = (ofVersion == OFVersion.OF_13) ? factory13 : factory10;
+        //log.debug("Sending CONFIG_REQUEST to {}", channel.getRemoteAddress());
+        List<OFMessage> msglist = new ArrayList<OFMessage>(3);
+
+        // Ensure we receive the full packet via PacketIn
+        // FIXME: We don't set the reassembly flags.
+        OFSetConfig sc = factory
+                .buildSetConfig()
+                .setMissSendLen((short) 0xffff)
+                .setXid(this.handshakeTransactionIds--)
+                .build();
+        msglist.add(sc);
+
+        // Barrier
+        OFBarrierRequest br = factory
+                .buildBarrierRequest()
+                .setXid(this.handshakeTransactionIds--)
+                .build();
+        msglist.add(br);
+
+        // Verify (need barrier?)
+        OFGetConfigRequest gcr = factory
+                .buildGetConfigRequest()
+                .setXid(this.handshakeTransactionIds--)
+                .build();
+        msglist.add(gcr);
+        channel.write(msglist);
+    }
+
+    /**
+     * send a description state request.
+     * @throws IOException
+     */
+    private void sendHandshakeDescriptionStatsRequest() throws IOException {
+        // Get Description to set switch-specific flags
+        OFFactory factory = (ofVersion == OFVersion.OF_13) ? factory13 : factory10;
+        OFDescStatsRequest dreq = factory
+                .buildDescStatsRequest()
+                .setXid(handshakeTransactionIds--)
+                .build();
+        channel.write(Collections.singletonList(dreq));
+    }
+
+    private void sendHandshakeOFPortDescRequest() throws IOException {
+        // Get port description for 1.3 switch
+        OFPortDescStatsRequest preq = factory13
+                .buildPortDescStatsRequest()
+                .setXid(handshakeTransactionIds--)
+                .build();
+        channel.write(Collections.singletonList(preq));
+    }
+
+    ChannelState getStateForTesting() {
+        return state;
+    }
+
+    void useRoleChangerWithOtherTimeoutForTesting(long roleTimeoutMs) {
+        roleChanger = new RoleChanger(roleTimeoutMs);
+    }
+
+
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/OFMessageDecoder.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/OFMessageDecoder.java
new file mode 100644
index 0000000..ff6fbf5
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/OFMessageDecoder.java
@@ -0,0 +1,56 @@
+/**
+ *    Copyright 2011, Big Switch Networks, Inc.
+ *    Originally created by David Erickson, Stanford University
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License"); you may
+ *    not use this file except in compliance with the License. You may obtain
+ *    a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ *    License for the specific language governing permissions and limitations
+ *    under the License.
+ **/
+
+package net.onrc.onos.of.ctl.internal;
+
+
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.channel.Channel;
+import org.jboss.netty.channel.ChannelHandlerContext;
+import org.jboss.netty.handler.codec.frame.FrameDecoder;
+import org.projectfloodlight.openflow.protocol.OFFactories;
+import org.projectfloodlight.openflow.protocol.OFMessage;
+import org.projectfloodlight.openflow.protocol.OFMessageReader;
+
+/**
+ * Decode an openflow message from a Channel, for use in a netty pipeline.
+ */
+public class OFMessageDecoder extends FrameDecoder {
+
+    @Override
+    protected Object decode(ChannelHandlerContext ctx, Channel channel,
+            ChannelBuffer buffer) throws Exception {
+        if (!channel.isConnected()) {
+            // In testing, I see decode being called AFTER decode last.
+            // This check avoids that from reading corrupted frames
+            return null;
+        }
+
+        // Note that a single call to decode results in reading a single
+        // OFMessage from the channel buffer, which is passed on to, and processed
+        // by, the controller (in OFChannelHandler).
+        // This is different from earlier behavior (with the original openflowj),
+        // where we parsed all the messages in the buffer, before passing on
+        // a list of the parsed messages to the controller.
+        // The performance *may or may not* not be as good as before.
+        OFMessageReader<OFMessage> reader = OFFactories.getGenericReader();
+        OFMessage message = reader.readFrom(buffer);
+
+        return message;
+    }
+
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/OFMessageEncoder.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/OFMessageEncoder.java
new file mode 100644
index 0000000..86933fc
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/OFMessageEncoder.java
@@ -0,0 +1,59 @@
+/**
+ *    Copyright 2011, Big Switch Networks, Inc.
+ *    Originally created by David Erickson, Stanford University
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License"); you may
+ *    not use this file except in compliance with the License. You may obtain
+ *    a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ *    License for the specific language governing permissions and limitations
+ *    under the License.
+ **/
+
+package net.onrc.onos.of.ctl.internal;
+
+import java.util.List;
+
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.jboss.netty.buffer.ChannelBuffers;
+import org.jboss.netty.channel.Channel;
+import org.jboss.netty.channel.ChannelHandlerContext;
+import org.jboss.netty.handler.codec.oneone.OneToOneEncoder;
+import org.projectfloodlight.openflow.protocol.OFMessage;
+
+
+/**
+ * Encode an openflow message for output into a ChannelBuffer, for use in a
+ * netty pipeline.
+ */
+public class OFMessageEncoder extends OneToOneEncoder {
+
+    @Override
+    protected Object encode(ChannelHandlerContext ctx, Channel channel,
+                            Object msg) throws Exception {
+        if (!(msg instanceof List)) {
+            return msg;
+        }
+
+        @SuppressWarnings("unchecked")
+        List<OFMessage> msglist = (List<OFMessage>) msg;
+        /* XXX S can't get length of OFMessage in loxigen's openflowj??
+        int size = 0;
+        for (OFMessage ofm : msglist) {
+            size += ofm.getLengthU();
+        }*/
+
+        ChannelBuffer buf = ChannelBuffers.dynamicBuffer();
+
+        for (OFMessage ofm : msglist) {
+            ofm.writeTo(buf);
+        }
+        return buf;
+    }
+
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/OpenflowPipelineFactory.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/OpenflowPipelineFactory.java
new file mode 100644
index 0000000..30f0287
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/OpenflowPipelineFactory.java
@@ -0,0 +1,78 @@
+/**
+*    Copyright 2011, Big Switch Networks, Inc.
+*    Originally created by David Erickson, Stanford University
+*
+*    Licensed under the Apache License, Version 2.0 (the "License"); you may
+*    not use this file except in compliance with the License. You may obtain
+*    a copy of the License at
+*
+*         http://www.apache.org/licenses/LICENSE-2.0
+*
+*    Unless required by applicable law or agreed to in writing, software
+*    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+*    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+*    License for the specific language governing permissions and limitations
+*    under the License.
+**/
+
+package net.onrc.onos.of.ctl.internal;
+
+import java.util.concurrent.ThreadPoolExecutor;
+
+import org.jboss.netty.channel.ChannelPipeline;
+import org.jboss.netty.channel.ChannelPipelineFactory;
+import org.jboss.netty.channel.Channels;
+import org.jboss.netty.handler.execution.ExecutionHandler;
+import org.jboss.netty.handler.timeout.IdleStateHandler;
+import org.jboss.netty.handler.timeout.ReadTimeoutHandler;
+import org.jboss.netty.util.ExternalResourceReleasable;
+import org.jboss.netty.util.HashedWheelTimer;
+import org.jboss.netty.util.Timer;
+
+/**
+ * Creates a ChannelPipeline for a server-side openflow channel.
+ */
+public class OpenflowPipelineFactory
+    implements ChannelPipelineFactory, ExternalResourceReleasable {
+
+    protected Controller controller;
+    protected ThreadPoolExecutor pipelineExecutor;
+    protected Timer timer;
+    protected IdleStateHandler idleHandler;
+    protected ReadTimeoutHandler readTimeoutHandler;
+
+    public OpenflowPipelineFactory(Controller controller,
+                                   ThreadPoolExecutor pipelineExecutor) {
+        super();
+        this.controller = controller;
+        this.pipelineExecutor = pipelineExecutor;
+        this.timer = new HashedWheelTimer();
+        this.idleHandler = new IdleStateHandler(timer, 20, 25, 0);
+        this.readTimeoutHandler = new ReadTimeoutHandler(timer, 30);
+    }
+
+    @Override
+    public ChannelPipeline getPipeline() throws Exception {
+        OFChannelHandler handler = new OFChannelHandler(controller);
+
+        ChannelPipeline pipeline = Channels.pipeline();
+        pipeline.addLast("ofmessagedecoder", new OFMessageDecoder());
+        pipeline.addLast("ofmessageencoder", new OFMessageEncoder());
+        pipeline.addLast("idle", idleHandler);
+        pipeline.addLast("timeout", readTimeoutHandler);
+        // XXX S ONOS: was 15 increased it to fix Issue #296
+        pipeline.addLast("handshaketimeout",
+                         new HandshakeTimeoutHandler(handler, timer, 60));
+        if (pipelineExecutor != null) {
+            pipeline.addLast("pipelineExecutor",
+                             new ExecutionHandler(pipelineExecutor));
+        }
+        pipeline.addLast("handler", handler);
+        return pipeline;
+    }
+
+    @Override
+    public void releaseExternalResources() {
+        timer.stop();
+    }
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchDriverSubHandshakeAlreadyStarted.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchDriverSubHandshakeAlreadyStarted.java
new file mode 100644
index 0000000..92c673c
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchDriverSubHandshakeAlreadyStarted.java
@@ -0,0 +1,14 @@
+package net.onrc.onos.of.ctl.internal;
+
+/**
+ * Thrown when IOFSwitch.startDriverHandshake() is called more than once.
+ *
+ */
+public class SwitchDriverSubHandshakeAlreadyStarted extends
+    SwitchDriverSubHandshakeException {
+    private static final long serialVersionUID = -5491845708752443501L;
+
+    public SwitchDriverSubHandshakeAlreadyStarted() {
+        super();
+    }
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchDriverSubHandshakeCompleted.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchDriverSubHandshakeCompleted.java
new file mode 100644
index 0000000..1600854
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchDriverSubHandshakeCompleted.java
@@ -0,0 +1,19 @@
+package net.onrc.onos.of.ctl.internal;
+
+import org.projectfloodlight.openflow.protocol.OFMessage;
+
+
+/**
+ * Indicates that a message was passed to a switch driver's subhandshake
+ * handling code but the driver has already completed the sub-handshake.
+ *
+ */
+public class SwitchDriverSubHandshakeCompleted
+        extends SwitchDriverSubHandshakeException {
+    private static final long serialVersionUID = -8817822245846375995L;
+
+    public SwitchDriverSubHandshakeCompleted(OFMessage m) {
+        super("Sub-Handshake is already complete but received message "
+              + m.getType());
+    }
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchDriverSubHandshakeException.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchDriverSubHandshakeException.java
new file mode 100644
index 0000000..c7d68f3
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchDriverSubHandshakeException.java
@@ -0,0 +1,26 @@
+package net.onrc.onos.of.ctl.internal;
+
+/**
+ * Base class for exception thrown by switch driver sub-handshake processing.
+ *
+ */
+public class SwitchDriverSubHandshakeException extends RuntimeException {
+    private static final long serialVersionUID = -6257836781419604438L;
+
+    protected SwitchDriverSubHandshakeException() {
+        super();
+    }
+
+    protected SwitchDriverSubHandshakeException(String arg0, Throwable arg1) {
+        super(arg0, arg1);
+    }
+
+    protected SwitchDriverSubHandshakeException(String arg0) {
+        super(arg0);
+    }
+
+    protected SwitchDriverSubHandshakeException(Throwable arg0) {
+        super(arg0);
+    }
+
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchDriverSubHandshakeNotStarted.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchDriverSubHandshakeNotStarted.java
new file mode 100644
index 0000000..d568cc6
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchDriverSubHandshakeNotStarted.java
@@ -0,0 +1,15 @@
+package net.onrc.onos.of.ctl.internal;
+
+/**
+ * Thrown when a switch driver's sub-handshake has not been started but an
+ * operation requiring the sub-handshake has been attempted.
+ *
+ */
+public class SwitchDriverSubHandshakeNotStarted extends
+    SwitchDriverSubHandshakeException {
+    private static final long serialVersionUID = -5491845708752443501L;
+
+    public SwitchDriverSubHandshakeNotStarted() {
+        super();
+    }
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchDriverSubHandshakeStateException.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchDriverSubHandshakeStateException.java
new file mode 100644
index 0000000..6091a86
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchDriverSubHandshakeStateException.java
@@ -0,0 +1,15 @@
+package net.onrc.onos.of.ctl.internal;
+
+/**
+ * Thrown when a switch driver's sub-handshake state-machine receives an
+ * unexpected OFMessage and/or is in an invald state.
+ *
+ */
+public class SwitchDriverSubHandshakeStateException extends
+    SwitchDriverSubHandshakeException {
+    private static final long serialVersionUID = -8249926069195147051L;
+
+    public SwitchDriverSubHandshakeStateException(String msg) {
+        super(msg);
+    }
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchStateException.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchStateException.java
new file mode 100644
index 0000000..e51b60d
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/internal/SwitchStateException.java
@@ -0,0 +1,50 @@
+/**
+ *    Copyright 2011, Big Switch Networks, Inc.
+ *    Originally created by David Erickson, Stanford University
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License"); you may
+ *    not use this file except in compliance with the License. You may obtain
+ *    a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ *    License for the specific language governing permissions and limitations
+ *    under the License.
+ **/
+
+package net.onrc.onos.of.ctl.internal;
+
+/**
+ * This exception indicates an error or unexpected message during
+ * message handling. E.g., if an OFMessage is received that is illegal or
+ * unexpected given the current handshake state.
+ *
+ * We don't allow wrapping other exception in a switch state exception. We
+ * only log the SwitchStateExceptions message so the causing exceptions
+ * stack trace is generally not available.
+ *
+ */
+public class SwitchStateException extends Exception {
+
+    private static final long serialVersionUID = 9153954512470002631L;
+
+    public SwitchStateException() {
+        super();
+    }
+
+    public SwitchStateException(String arg0, Throwable arg1) {
+        super(arg0, arg1);
+    }
+
+    public SwitchStateException(String arg0) {
+        super(arg0);
+    }
+
+    public SwitchStateException(Throwable arg0) {
+        super(arg0);
+    }
+
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/registry/ControllerRegistryEntry.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/registry/ControllerRegistryEntry.java
new file mode 100644
index 0000000..2472f64
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/registry/ControllerRegistryEntry.java
@@ -0,0 +1,66 @@
+package net.onrc.onos.of.ctl.registry;
+
+
+
+public class ControllerRegistryEntry implements Comparable<ControllerRegistryEntry> {
+    //
+    // TODO: Refactor the implementation and decide whether controllerId
+    // is needed. If "yes", we might need to consider it inside the
+    // compareTo(), equals() and hashCode() implementations.
+    //
+    private final String controllerId;
+    private final int sequenceNumber;
+
+    public ControllerRegistryEntry(String controllerId, int sequenceNumber) {
+        this.controllerId = controllerId;
+        this.sequenceNumber = sequenceNumber;
+    }
+
+    public String getControllerId() {
+        return controllerId;
+    }
+
+    /**
+     * Compares this object with the specified object for order.
+     * NOTE: the test is based on ControllerRegistryEntry sequence numbers,
+     * and doesn't include the controllerId.
+     *
+     * @param o the object to be compared.
+     * @return a negative integer, zero, or a positive integer as this object
+     * is less than, equal to, or greater than the specified object.
+     */
+    @Override
+    public int compareTo(ControllerRegistryEntry o) {
+        return this.sequenceNumber - o.sequenceNumber;
+    }
+
+    /**
+     * Test whether some other object is "equal to" this one.
+     * NOTE: the test is based on ControllerRegistryEntry sequence numbers,
+     * and doesn't include the controllerId.
+     *
+     * @param obj the reference object with which to compare.
+     * @return true if this object is the same as the obj argument; false
+     * otherwise.
+     */
+    @Override
+    public boolean equals(Object obj) {
+        if (obj instanceof ControllerRegistryEntry) {
+            ControllerRegistryEntry other = (ControllerRegistryEntry) obj;
+            return this.sequenceNumber == other.sequenceNumber;
+        }
+        return false;
+    }
+
+    /**
+     * Get the hash code for the object.
+     * NOTE: the computation is based on ControllerRegistryEntry sequence
+     * numbers, and doesn't include the controller ID.
+     *
+     * @return a hash code value for this object.
+     */
+    @Override
+    public int hashCode() {
+        return Integer.valueOf(this.sequenceNumber).hashCode();
+    }
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/registry/IControllerRegistry.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/registry/IControllerRegistry.java
new file mode 100644
index 0000000..0b67338
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/registry/IControllerRegistry.java
@@ -0,0 +1,155 @@
+package net.onrc.onos.of.ctl.registry;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import net.onrc.onos.of.ctl.util.InstanceId;
+
+/**
+ * A registry service that allows ONOS to register controllers and switches in a
+ * way that is global to the entire ONOS cluster. The registry is the arbiter
+ * for allowing controllers to control switches.
+ * <p/>
+ * The OVS/OF1.{2,3} fault tolerance model is a switch connects to multiple
+ * controllers, and the controllers send role requests to tell the switch their
+ * role in controlling the switch.
+ * <p/>
+ * The ONOS fault tolerance model allows only a single controller to have
+ * control of a switch (MASTER role) at once. Controllers therefore need a
+ * mechanism that enables them to decide who should control a each switch. The
+ * registry service provides this mechanism.
+ */
+public interface IControllerRegistry {
+
+    /**
+     * Callback interface for control change events.
+     */
+    public interface ControlChangeCallback {
+        /**
+         * Called whenever the control changes from the point of view of the
+         * registry. The callee can check whether they have control or not using
+         * the hasControl parameter.
+         *
+         * @param dpid The switch that control has changed for
+         * @param hasControl Whether the listener now has control or not
+         */
+        void controlChanged(long dpid, boolean hasControl);
+    }
+
+    /**
+     * Request for control of a switch. This method does not block. When control
+     * for a switch changes, the controlChanged method on the callback object
+     * will be called. This happens any time the control changes while the
+     * request is still active (until releaseControl is called)
+     *
+     * @param dpid Switch to request control for
+     * @param cb Callback that will be used to notify caller of control changes
+     * @throws RegistryException Errors contacting the registry service
+     */
+    public void requestControl(long dpid, ControlChangeCallback cb)
+            throws RegistryException;
+
+    /**
+     * Stop trying to take control of a switch. This removes the entry for this
+     * controller requesting this switch in the registry. If the controller had
+     * control when this is called, another controller will now gain control of
+     * the switch. This call doesn't block.
+     *
+     * @param dpid Switch to release control of
+     */
+    public void releaseControl(long dpid);
+
+    /**
+     * Check whether the controller has control of the switch This call doesn't
+     * block.
+     *
+     * @param dpid Switch to check control of
+     * @return true if controller has control of the switch.
+     */
+    public boolean hasControl(long dpid);
+
+    /**
+     * Check whether this instance is the leader for the cluster. This call
+     * doesn't block.
+     *
+     * @return true if the instance is the leader for the cluster, otherwise
+     *         false.
+     */
+    public boolean isClusterLeader();
+
+    /**
+     * Gets the unique ID used to identify this ONOS instance in the cluster.
+     *
+     * @return Instance ID.
+     */
+    public InstanceId getOnosInstanceId();
+
+    /**
+     * Register a controller to the ONOS cluster. Must be called before the
+     * registry can be used to take control of any switches.
+     *
+     * @param controllerId A unique string ID identifying this controller in the
+     *        cluster
+     * @throws RegistryException for errors connecting to registry service,
+     *         controllerId already registered
+     */
+    public void registerController(String controllerId)
+            throws RegistryException;
+
+    /**
+     * Get all controllers in the cluster.
+     *
+     * @return Collection of controller IDs
+     * @throws RegistryException on error
+     */
+    public Collection<String> getAllControllers() throws RegistryException;
+
+    /**
+     * Get all switches in the cluster, along with which controller is in
+     * control of them (if any) and any other controllers that have requested
+     * control.
+     *
+     * @return Map of all switches.
+     */
+    public Map<String, List<ControllerRegistryEntry>> getAllSwitches();
+
+    /**
+     * Get the controller that has control of a given switch.
+     *
+     * @param dpid Switch to find controller for
+     * @return controller ID
+     * @throws RegistryException Errors contacting registry service
+     */
+    public String getControllerForSwitch(long dpid) throws RegistryException;
+
+    /**
+     * Get all switches controlled by a given controller.
+     *
+     * @param controllerId ID of the controller
+     * @return Collection of dpids
+     */
+    public Collection<Long> getSwitchesControlledByController(String controllerId);
+
+    /**
+     * Get a unique Id Block.
+     *
+     * @return Id Block.
+     */
+    public IdBlock allocateUniqueIdBlock();
+
+    /**
+     * Get next unique id and retrieve a new range of ids if needed.
+     *
+     * @param range range to use for the identifier
+     * @return Id Block.
+     */
+    public IdBlock allocateUniqueIdBlock(long range);
+
+    /**
+     * Get a globally unique ID.
+     *
+     * @return a globally unique ID.
+     */
+    public long getNextUniqueId();
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/registry/IdBlock.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/registry/IdBlock.java
new file mode 100644
index 0000000..45d3c83
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/registry/IdBlock.java
@@ -0,0 +1,32 @@
+package net.onrc.onos.of.ctl.registry;
+
+public class IdBlock {
+    private final long start;
+    private final long end;
+    private final long size;
+
+    public IdBlock(long start, long end, long size) {
+        this.start = start;
+        this.end = end;
+        this.size = size;
+    }
+
+    public long getStart() {
+        return start;
+    }
+
+    public long getEnd() {
+        return end;
+    }
+
+    public long getSize() {
+        return size;
+    }
+
+    @Override
+    public String toString() {
+        return "IdBlock [start=" + start + ", end=" + end + ", size=" + size
+                + "]";
+    }
+}
+
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/registry/RegistryException.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/registry/RegistryException.java
new file mode 100644
index 0000000..06f5932
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/registry/RegistryException.java
@@ -0,0 +1,15 @@
+package net.onrc.onos.of.ctl.registry;
+
+public class RegistryException extends Exception {
+
+    private static final long serialVersionUID = -8276300722010217913L;
+
+    public RegistryException(String message) {
+        super(message);
+    }
+
+    public RegistryException(String message, Throwable cause) {
+        super(message, cause);
+    }
+
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/Dpid.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/Dpid.java
new file mode 100644
index 0000000..5544354
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/Dpid.java
@@ -0,0 +1,74 @@
+package net.onrc.onos.of.ctl.util;
+
+import org.projectfloodlight.openflow.util.HexString;
+
+/**
+ * The class representing a network switch DPID.
+ * This class is immutable.
+ */
+public final class Dpid {
+    private static final long UNKNOWN = 0;
+    private final long value;
+
+    /**
+     * Default constructor.
+     */
+    public Dpid() {
+        this.value = Dpid.UNKNOWN;
+    }
+
+    /**
+     * Constructor from a long value.
+     *
+     * @param value the value to use.
+     */
+    public Dpid(long value) {
+        this.value = value;
+    }
+
+    /**
+     * Constructor from a string.
+     *
+     * @param value the value to use.
+     */
+    public Dpid(String value) {
+        this.value = HexString.toLong(value);
+    }
+
+    /**
+     * Get the value of the DPID.
+     *
+     * @return the value of the DPID.
+     */
+    public long value() {
+        return value;
+    }
+
+    /**
+     * Convert the DPID value to a ':' separated hexadecimal string.
+     *
+     * @return the DPID value as a ':' separated hexadecimal string.
+     */
+    @Override
+    public String toString() {
+        return HexString.toHexString(this.value);
+    }
+
+    @Override
+    public boolean equals(Object other) {
+        if (!(other instanceof Dpid)) {
+            return false;
+        }
+
+        Dpid otherDpid = (Dpid) other;
+
+        return value == otherDpid.value;
+    }
+
+    @Override
+    public int hashCode() {
+        int hash = 17;
+        hash += 31 * hash + (int) (value ^ value >>> 32);
+        return hash;
+    }
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/DummySwitchForTesting.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/DummySwitchForTesting.java
new file mode 100644
index 0000000..a8eabce
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/DummySwitchForTesting.java
@@ -0,0 +1,360 @@
+package net.onrc.onos.of.ctl.util;
+
+import java.io.IOException;
+import java.util.Collection;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.concurrent.Future;
+
+import org.jboss.netty.channel.Channel;
+import org.projectfloodlight.openflow.protocol.OFActionType;
+import org.projectfloodlight.openflow.protocol.OFCapabilities;
+import org.projectfloodlight.openflow.protocol.OFDescStatsReply;
+import org.projectfloodlight.openflow.protocol.OFFeaturesReply;
+import org.projectfloodlight.openflow.protocol.OFMessage;
+import org.projectfloodlight.openflow.protocol.OFPortDesc;
+import org.projectfloodlight.openflow.protocol.OFPortDescStatsReply;
+import org.projectfloodlight.openflow.protocol.OFPortStatus;
+import org.projectfloodlight.openflow.protocol.OFStatsReply;
+import org.projectfloodlight.openflow.protocol.OFStatsRequest;
+import org.projectfloodlight.openflow.protocol.OFVersion;
+import org.projectfloodlight.openflow.types.DatapathId;
+import org.projectfloodlight.openflow.types.U64;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import net.onrc.onos.of.ctl.IOFSwitch;
+import net.onrc.onos.of.ctl.Role;
+import net.onrc.onos.of.ctl.debugcounter.IDebugCounterService;
+import net.onrc.onos.of.ctl.debugcounter.IDebugCounterService.CounterException;
+
+public class DummySwitchForTesting implements IOFSwitch {
+
+    protected static final Logger log = LoggerFactory.getLogger(DummySwitchForTesting.class);
+
+    private Channel channel;
+    private boolean connected = false;
+    private OFVersion ofv = OFVersion.OF_10;
+
+    private Collection<OFPortDesc> ports;
+
+    private DatapathId datapathId;
+
+    private Set<OFCapabilities> capabilities;
+
+    private int buffers;
+
+    private byte tables;
+
+    private String stringId;
+
+    private Role role;
+
+    @Override
+    public void disconnectSwitch() {
+        this.channel.close();
+    }
+
+    @Override
+    public void write(OFMessage m) throws IOException {
+        this.channel.write(m);
+
+    }
+
+    @Override
+    public void write(List<OFMessage> msglist) throws IOException {
+        for (OFMessage m : msglist) {
+            this.channel.write(m);
+        }
+
+    }
+
+    @Override
+    public Date getConnectedSince() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public int getNextTransactionId() {
+        return 0;
+    }
+
+    @Override
+    public boolean isConnected() {
+        return this.connected;
+    }
+
+    @Override
+    public void setConnected(boolean connected) {
+        this.connected  = connected;
+
+    }
+
+    @Override
+    public void flush() {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setChannel(Channel channel) {
+        this.channel = channel;
+
+    }
+
+    @Override
+    public long getId() {
+        if (this.stringId == null) {
+            throw new RuntimeException("Features reply has not yet been set");
+        }
+        return this.datapathId.getLong();
+    }
+
+    @Override
+    public String getStringId() {
+        // TODO Auto-generated method stub
+        return "DummySwitch";
+    }
+
+    @Override
+    public int getNumBuffers() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public Set<OFCapabilities> getCapabilities() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public byte getNumTables() {
+        // TODO Auto-generated method stub
+        return 0;
+    }
+
+    @Override
+    public OFDescStatsReply getSwitchDescription() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public void cancelFeaturesReply(int transactionId) {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public Set<OFActionType> getActions() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public void setOFVersion(OFVersion version) {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public OFVersion getOFVersion() {
+        return this.ofv;
+    }
+
+    @Override
+    public Collection<OFPortDesc> getEnabledPorts() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Collection<Integer> getEnabledPortNumbers() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public OFPortDesc getPort(int portNumber) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public OFPortDesc getPort(String portName) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public OrderedCollection<PortChangeEvent> processOFPortStatus(
+            OFPortStatus ps) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public Collection<OFPortDesc> getPorts() {
+        return ports;
+    }
+
+    @Override
+    public boolean portEnabled(int portName) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public OrderedCollection<PortChangeEvent> setPorts(
+            Collection<OFPortDesc> p) {
+        this.ports = p;
+        return null;
+    }
+
+    @Override
+    public Map<Object, Object> getAttributes() {
+        return null;
+    }
+
+    @Override
+    public boolean hasAttribute(String name) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public Object getAttribute(String name) {
+        return Boolean.FALSE;
+    }
+
+    @Override
+    public void setAttribute(String name, Object value) {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public Object removeAttribute(String name) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public void deliverStatisticsReply(OFMessage reply) {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void cancelStatisticsReply(int transactionId) {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void cancelAllStatisticsReplies() {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public Future<List<OFStatsReply>> getStatistics(OFStatsRequest<?> request)
+            throws IOException {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public void clearAllFlowMods() {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public Role getRole() {
+        return this.role;
+    }
+
+    @Override
+    public void setRole(Role role) {
+        this.role = role;
+    }
+
+    @Override
+    public U64 getNextGenerationId() {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+    @Override
+    public void setDebugCounterService(IDebugCounterService debugCounter)
+            throws CounterException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void startDriverHandshake() throws IOException {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public boolean isDriverHandshakeComplete() {
+        return true;
+    }
+
+    @Override
+    public void processDriverHandshakeMessage(OFMessage m) {
+
+    }
+
+    @Override
+    public void setTableFull(boolean isFull) {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void setFeaturesReply(OFFeaturesReply featuresReply) {
+        if (featuresReply == null) {
+            log.error("Error setting featuresReply for switch: {}", getStringId());
+            return;
+        }
+        this.datapathId = featuresReply.getDatapathId();
+        this.capabilities = featuresReply.getCapabilities();
+        this.buffers = (int) featuresReply.getNBuffers();
+        this.tables = (byte) featuresReply.getNTables();
+        this.stringId = this.datapathId.toString();
+
+    }
+
+    @Override
+    public void setPortDescReply(OFPortDescStatsReply portDescReply) {
+        // TODO Auto-generated method stub
+
+    }
+
+    @Override
+    public void handleMessage(OFMessage m) {
+        log.info("Got packet {} but I am dumb so I don't know what to do.", m);
+    }
+
+    @Override
+    public boolean portEnabled(String portName) {
+        // TODO Auto-generated method stub
+        return false;
+    }
+
+    @Override
+    public OrderedCollection<PortChangeEvent> comparePorts(
+            Collection<OFPortDesc> p) {
+        // TODO Auto-generated method stub
+        return null;
+    }
+
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/EnumBitmaps.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/EnumBitmaps.java
new file mode 100644
index 0000000..fe6ccc0
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/EnumBitmaps.java
@@ -0,0 +1,149 @@
+package net.onrc.onos.of.ctl.util;
+
+import java.util.EnumSet;
+import java.util.Set;
+
+/**
+ * A utility class to convert between integer based bitmaps for (OpenFlow)
+ * flags and Enum and EnumSet based representations.
+ *
+ * The enum used to represent individual flags needs to implement the
+ * BitmapableEnum interface.
+ *
+ * Example:
+ * {@code
+ *   int bitmap = 0x11; // OFPPC_PORT_DOWN | OFPPC_NO_STP
+ *   EnumSet<OFPortConfig> s = toEnumSet(OFPortConfig.class, bitmap);
+ *   // s will contain OFPPC_PORT_DOWN and OFPPC_NO_STP
+ * }
+ *
+ * {@code
+ *    EnumSet<OFPortConfig> s = EnumSet.of(OFPPC_NO_STP, OFPPC_PORT_DOWN);
+ *    int bitmap = toBitmap(s); // returns 0x11
+ * }
+ *
+ */
+public final class EnumBitmaps {
+
+
+    private EnumBitmaps() { }
+
+    /**
+     * Enums used to represent individual flags needs to implement this
+     * interface.
+     */
+    public interface BitmapableEnum {
+        /** Return the value in the bitmap that the enum constant represents.
+         * The returned value must have only a single bit set. E.g.,1 << 3
+         */
+        int getValue();
+    }
+
+
+    /**
+     * Convert an integer bitmap to an EnumSet.
+     *
+     * See class description for example
+     * @param type The Enum class to use. Must implement BitmapableEnum
+     * @param bitmap The integer bitmap
+     * @return A newly allocated EnumSet representing the bits set in the
+     * bitmap
+     * @throws NullPointerException if type is null
+     * @throws IllegalArgumentException if any enum constant from type has
+     * more than one bit set.
+     * @throws IllegalArgumentException if the bitmap has any bits set not
+     * represented by an enum constant.
+     */
+    public static <E extends Enum<E> & BitmapableEnum>
+            EnumSet<E> toEnumSet(Class<E> type, int bitmap) {
+        if (type == null) {
+            throw new NullPointerException("Given enum type must not be null");
+        }
+        EnumSet<E> s = EnumSet.noneOf(type);
+        // allSetBitmap will eventually have all valid bits for the given
+        // type set.
+        int allSetBitmap = 0;
+        for (E element: type.getEnumConstants()) {
+            if (Integer.bitCount(element.getValue()) != 1) {
+                String msg = String.format("The %s (%x) constant of the " +
+                        "enum %s is supposed to represent a bitmap entry but " +
+                        "has more than one bit set.",
+                        element.toString(), element.getValue(), type.getName());
+                throw new IllegalArgumentException(msg);
+            }
+            allSetBitmap |= element.getValue();
+            if ((bitmap & element.getValue()) != 0) {
+                s.add(element);
+            }
+        }
+        if (((~allSetBitmap) & bitmap) != 0) {
+            // check if only valid flags are set in the given bitmap
+            String msg = String.format("The bitmap %x for enum %s has " +
+                    "bits set that are presented by any enum constant",
+                    bitmap, type.getName());
+            throw new IllegalArgumentException(msg);
+        }
+        return s;
+    }
+
+    /**
+     * Return the bitmap mask with all possible bits set. E.g., If a bitmap
+     * has the individual flags 0x1, 0x2, and 0x8 (note the missing 0x4) then
+     * the mask will be 0xb (1011 binary)
+     *
+     * @param type The Enum class to use. Must implement BitmapableEnum
+     * @throws NullPointerException if type is null
+     * @throws IllegalArgumentException if any enum constant from type has
+     * more than one bit set
+     * @return an integer with all possible bits for the given bitmap enum
+     * type set.
+     */
+    public static <E extends Enum<E> & BitmapableEnum>
+            int getMask(Class<E> type) {
+        if (type == null) {
+            throw new NullPointerException("Given enum type must not be null");
+        }
+        // allSetBitmap will eventually have all valid bits for the given
+        // type set.
+        int allSetBitmap = 0;
+        for (E element: type.getEnumConstants()) {
+            if (Integer.bitCount(element.getValue()) != 1) {
+                String msg = String.format("The %s (%x) constant of the " +
+                        "enum %s is supposed to represent a bitmap entry but " +
+                        "has more than one bit set.",
+                        element.toString(), element.getValue(), type.getName());
+                throw new IllegalArgumentException(msg);
+            }
+            allSetBitmap |= element.getValue();
+        }
+        return allSetBitmap;
+    }
+
+    /**
+     * Convert the given EnumSet to the integer bitmap representation.
+     * @param set The EnumSet to convert. The enum must implement
+     * BitmapableEnum
+     * @return the integer bitmap
+     * @throws IllegalArgumentException if an enum constant from the set (!) has
+     * more than one bit set
+     * @throws NullPointerException if the set is null
+     */
+    public static <E extends Enum<E> & BitmapableEnum>
+            int toBitmap(Set<E> set) {
+        if (set == null) {
+            throw new NullPointerException("Given set must not be null");
+        }
+        int bitmap = 0;
+        for (E element: set) {
+            if (Integer.bitCount(element.getValue()) != 1) {
+                String msg = String.format("The %s (%x) constant in the set " +
+                        "is supposed to represent a bitmap entry but " +
+                        "has more than one bit set.",
+                        element.toString(), element.getValue());
+                throw new IllegalArgumentException(msg);
+            }
+            bitmap |= element.getValue();
+        }
+        return bitmap;
+    }
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/FilterIterator.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/FilterIterator.java
new file mode 100644
index 0000000..fdde82c
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/FilterIterator.java
@@ -0,0 +1,85 @@
+/**
+ *    Copyright 2012, Big Switch Networks, Inc.
+ *    Originally created by David Erickson, Stanford University
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License"); you may
+ *    not use this file except in compliance with the License. You may obtain
+ *    a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ *    License for the specific language governing permissions and limitations
+ *    under the License.
+ **/
+
+package net.onrc.onos.of.ctl.util;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+
+/**
+ * An iterator that will filter values from an iterator and return only
+ * those values that match the predicate.
+ */
+public abstract class FilterIterator<T> implements Iterator<T> {
+    protected Iterator<T> subIterator;
+    protected T next;
+
+    /**
+     * Construct a filter iterator from the given sub iterator.
+     *
+     * @param subIterator the sub iterator over which we'll filter
+     */
+    public FilterIterator(Iterator<T> subIterator) {
+        super();
+        this.subIterator = subIterator;
+    }
+
+    /**
+     * Check whether the given value should be returned by the
+     * filter.
+     *
+     * @param value the value to check
+     * @return true if the value should be included
+     */
+    protected abstract boolean matches(T value);
+
+    // ***********
+    // Iterator<T>
+    // ***********
+
+    @Override
+    public boolean hasNext() {
+        if (next != null) {
+            return true;
+        }
+
+        while (subIterator.hasNext()) {
+            next = subIterator.next();
+            if (matches(next)) {
+                return true;
+            }
+        }
+        next = null;
+        return false;
+    }
+
+    @Override
+    public T next() {
+        if (hasNext()) {
+            T cur = next;
+            next = null;
+            return cur;
+        }
+        throw new NoSuchElementException();
+    }
+
+    @Override
+    public void remove() {
+        throw new UnsupportedOperationException();
+    }
+
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/InstanceId.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/InstanceId.java
new file mode 100644
index 0000000..861dec6
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/InstanceId.java
@@ -0,0 +1,47 @@
+package net.onrc.onos.of.ctl.util;
+
+import static com.google.common.base.Preconditions.checkNotNull;
+import static com.google.common.base.Preconditions.checkArgument;
+
+/**
+ * The class representing an ONOS Instance ID.
+ *
+ * This class is immutable.
+ */
+public final class InstanceId {
+    private final String id;
+
+    /**
+     * Constructor from a string value.
+     *
+     * @param id the value to use.
+     */
+    public InstanceId(String id) {
+        this.id = checkNotNull(id);
+        checkArgument(!id.isEmpty(), "Empty ONOS Instance ID");
+    }
+
+    @Override
+    public int hashCode() {
+        return id.hashCode();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (obj == this) {
+            return true;
+        }
+
+        if (!(obj instanceof InstanceId)) {
+            return false;
+        }
+
+        InstanceId that = (InstanceId) obj;
+        return this.id.equals(that.id);
+    }
+
+    @Override
+    public String toString() {
+        return id;
+    }
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/IterableIterator.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/IterableIterator.java
new file mode 100644
index 0000000..79f3c9d
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/IterableIterator.java
@@ -0,0 +1,68 @@
+/**
+ *    Copyright 2012 Big Switch Networks, Inc.
+ *    Originally created by David Erickson, Stanford University
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License"); you may
+ *    not use this file except in compliance with the License. You may obtain
+ *    a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ *    License for the specific language governing permissions and limitations
+ *    under the License.
+ **/
+
+package net.onrc.onos.of.ctl.util;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+
+/**
+ * Iterator over all values in an iterator of iterators.
+ *
+ * @param <T> the type of elements returned by this iterator
+ */
+public class IterableIterator<T> implements Iterator<T> {
+    Iterator<? extends Iterable<T>> subIterator;
+    Iterator<T> current = null;
+
+    public IterableIterator(Iterator<? extends Iterable<T>> subIterator) {
+        super();
+        this.subIterator = subIterator;
+    }
+
+    @Override
+    public boolean hasNext() {
+        if (current == null) {
+            if (subIterator.hasNext()) {
+                current = subIterator.next().iterator();
+            } else {
+                return false;
+            }
+        }
+        while (!current.hasNext() && subIterator.hasNext()) {
+            current = subIterator.next().iterator();
+        }
+
+        return current.hasNext();
+    }
+
+    @Override
+    public T next() {
+        if (hasNext()) {
+            return current.next();
+        }
+        throw new NoSuchElementException();
+    }
+
+    @Override
+    public void remove() {
+        if (hasNext()) {
+            current.remove();
+        }
+        throw new NoSuchElementException();
+    }
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/LRUHashMap.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/LRUHashMap.java
new file mode 100644
index 0000000..17f9354
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/LRUHashMap.java
@@ -0,0 +1,38 @@
+/**
+ *    Copyright 2011, Big Switch Networks, Inc.
+ *    Originally created by David Erickson, Stanford University
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License"); you may
+ *    not use this file except in compliance with the License. You may obtain
+ *    a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ *    License for the specific language governing permissions and limitations
+ *    under the License.
+ **/
+
+package net.onrc.onos.of.ctl.util;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+public class LRUHashMap<K, V> extends LinkedHashMap<K, V> {
+
+    private static final long serialVersionUID = 1L;
+
+    private final int capacity;
+
+    public LRUHashMap(int capacity) {
+        super(capacity + 1, 0.75f, true);
+        this.capacity = capacity;
+    }
+
+    protected boolean removeEldestEntry(Map.Entry<K, V> eldest) {
+        return size() > capacity;
+    }
+
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/LinkedHashSetWrapper.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/LinkedHashSetWrapper.java
new file mode 100644
index 0000000..629e536
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/LinkedHashSetWrapper.java
@@ -0,0 +1,32 @@
+package net.onrc.onos.of.ctl.util;
+
+import java.util.Collection;
+import java.util.LinkedHashSet;
+
+import com.google.common.collect.ForwardingCollection;
+
+/**
+ * A simple wrapper / forwarder that forwards all calls to a LinkedHashSet.
+ * This wrappers sole reason for existence is to implement the
+ * OrderedCollection marker interface.
+ *
+ */
+public class LinkedHashSetWrapper<E>
+        extends ForwardingCollection<E> implements OrderedCollection<E> {
+    private final Collection<E> delegate;
+
+    public LinkedHashSetWrapper() {
+        super();
+        this.delegate = new LinkedHashSet<E>();
+    }
+
+    public LinkedHashSetWrapper(Collection<? extends E> c) {
+        super();
+        this.delegate = new LinkedHashSet<E>(c);
+    }
+
+    @Override
+    protected Collection<E> delegate() {
+        return this.delegate;
+    }
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/MultiIterator.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/MultiIterator.java
new file mode 100644
index 0000000..693a8bf
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/MultiIterator.java
@@ -0,0 +1,68 @@
+/**
+ *    Copyright 2012 Big Switch Networks, Inc.
+ *    Originally created by David Erickson, Stanford University
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License"); you may
+ *    not use this file except in compliance with the License. You may obtain
+ *    a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ *    License for the specific language governing permissions and limitations
+ *    under the License.
+ **/
+
+package net.onrc.onos.of.ctl.util;
+
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+
+/**
+ * Iterator over all values in an iterator of iterators.
+ *
+ * @param <T> the type of elements returned by this iterator
+ */
+public class MultiIterator<T> implements Iterator<T> {
+    Iterator<Iterator<T>> subIterator;
+    Iterator<T> current = null;
+
+    public MultiIterator(Iterator<Iterator<T>> subIterator) {
+        super();
+        this.subIterator = subIterator;
+    }
+
+    @Override
+    public boolean hasNext() {
+        if (current == null) {
+            if (subIterator.hasNext()) {
+                current = subIterator.next();
+            } else {
+                return false;
+            }
+        }
+        while (!current.hasNext() && subIterator.hasNext()) {
+            current = subIterator.next();
+        }
+
+        return current.hasNext();
+    }
+
+    @Override
+    public T next() {
+        if (hasNext()) {
+            return current.next();
+        }
+        throw new NoSuchElementException();
+    }
+
+    @Override
+    public void remove() {
+        if (hasNext()) {
+            current.remove();
+        }
+        throw new NoSuchElementException();
+    }
+}
diff --git a/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/OrderedCollection.java b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/OrderedCollection.java
new file mode 100644
index 0000000..f032212
--- /dev/null
+++ b/of-save/ctl/src/main/java/net/onrc/onos/of/ctl/util/OrderedCollection.java
@@ -0,0 +1,14 @@
+package net.onrc.onos.of.ctl.util;
+
+import java.util.Collection;
+
+/**
+ * A marker interface indicating that this Collection defines a particular
+ * iteration order. The details about the iteration order are specified by
+ * the concrete implementation.
+ *
+ * @param <E>
+ */
+public interface OrderedCollection<E> extends Collection<E> {
+
+}
diff --git a/of-save/ctl/src/test/java/net/onrc/onos/of/ctl/internal/ControllerTest.java b/of-save/ctl/src/test/java/net/onrc/onos/of/ctl/internal/ControllerTest.java
new file mode 100644
index 0000000..ea7d884
--- /dev/null
+++ b/of-save/ctl/src/test/java/net/onrc/onos/of/ctl/internal/ControllerTest.java
@@ -0,0 +1,167 @@
+/**
+ *    Copyright 2011, Big Switch Networks, Inc.
+ *    Originally created by David Erickson, Stanford University
+ *
+ *    Licensed under the Apache License, Version 2.0 (the "License"); you may
+ *    not use this file except in compliance with the License. You may obtain
+ *    a copy of the License at
+ *
+ *         http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *    Unless required by applicable law or agreed to in writing, software
+ *    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
+ *    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ *    License for the specific language governing permissions and limitations
+ *    under the License.
+ **/
+
+package net.onrc.onos.of.ctl.internal;
+
+import junit.framework.TestCase;
+import net.onrc.onos.of.ctl.IOFSwitch;
+
+import org.easymock.EasyMock;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+
+
+public class ControllerTest extends TestCase {
+
+    private Controller controller;
+    private IOFSwitch sw;
+    private OFChannelHandler h;
+
+    @Override
+    @Before
+    public void setUp() throws Exception {
+        super.setUp();
+        sw = EasyMock.createMock(IOFSwitch.class);
+        h = EasyMock.createMock(OFChannelHandler.class);
+        controller = new Controller();
+        ControllerRunThread t = new ControllerRunThread();
+        t.start();
+        /*
+         * Making sure the thread is properly started before making calls
+         * to controller class.
+         */
+        Thread.sleep(200);
+    }
+
+    /**
+     * Starts the base mocks used in these tests.
+     */
+    private void startMocks() {
+        EasyMock.replay(sw, h);
+    }
+
+    /**
+     * Reset the mocks to a known state.
+     * Automatically called after tests.
+     */
+    @After
+    private void resetMocks() {
+        EasyMock.reset(sw);
+    }
+
+    /**
+     * Fetches the controller instance.
+     * @return the controller
+     */
+    public Controller getController() {
+        return controller;
+    }
+
+    /**
+     * Run the controller's main loop so that updates are processed.
+     */
+    protected class ControllerRunThread extends Thread {
+        @Override
+        public void run() {
+            controller.openFlowPort = 0; // Don't listen
+            controller.activate();
+        }
+    }
+
+    /**
+     * Verify that we are able to add a switch that just connected.
+     * If it already exists then this should fail
+     *
+     * @throws Exception error
+     */
+    @Test
+    public void testAddConnectedSwitches() throws Exception {
+        startMocks();
+        assertTrue(controller.addConnectedSwitch(0, h));
+        assertFalse(controller.addConnectedSwitch(0, h));
+    }
+
+    /**
+     * Add active master but cannot re-add active master.
+     * @throws Exception an error occurred.
+     */
+    @Test
+    public void testAddActivatedMasterSwitch() throws Exception {
+        startMocks();
+        controller.addConnectedSwitch(0, h);
+        assertTrue(controller.addActivatedMasterSwitch(0, sw));
+        assertFalse(controller.addActivatedMasterSwitch(0, sw));
+    }
+
+    /**
+     * Tests that an activated switch can be added but cannot be re-added.
+     *
+     * @throws Exception an error occurred
+     */
+    @Test
+    public void testAddActivatedEqualSwitch() throws Exception {
+        startMocks();
+        controller.addConnectedSwitch(0, h);
+        assertTrue(controller.addActivatedEqualSwitch(0, sw));
+        assertFalse(controller.addActivatedEqualSwitch(0, sw));
+    }
+
+    /**
+     * Move an equal switch to master.
+     * @throws Exception an error occurred
+     */
+    @Test
+    public void testTranstitionToMaster() throws Exception {
+        startMocks();
+        controller.addConnectedSwitch(0, h);
+        controller.addActivatedEqualSwitch(0, sw);
+        controller.transitionToMasterSwitch(0);
+        assertNotNull(controller.getMasterSwitch(0));
+    }
+
+    /**
+     * Transition a master switch to equal state.
+     * @throws Exception an error occurred
+     */
+    @Test
+    public void testTranstitionToEqual() throws Exception {
+        startMocks();
+        controller.addConnectedSwitch(0, h);
+        controller.addActivatedMasterSwitch(0, sw);
+        controller.transitionToEqualSwitch(0);
+        assertNotNull(controller.getEqualSwitch(0));
+    }
+
+    /**
+     * Remove the switch from the controller instance.
+     * @throws Exception an error occurred
+     */
+    @Test
+    public void testRemoveSwitch() throws Exception {
+        sw.cancelAllStatisticsReplies();
+        EasyMock.expectLastCall().once();
+        sw.setConnected(false);
+        EasyMock.expectLastCall().once();
+        startMocks();
+        controller.addConnectedSwitch(0, h);
+        controller.addActivatedMasterSwitch(0, sw);
+        controller.removeConnectedSwitch(0);
+        assertNull(controller.getSwitch(0));
+        EasyMock.verify(sw, h);
+    }
+}
diff --git a/of-save/ctl/src/test/java/net/onrc/onos/of/ctl/internal/OFChannelHandlerTest.java b/of-save/ctl/src/test/java/net/onrc/onos/of/ctl/internal/OFChannelHandlerTest.java
new file mode 100644
index 0000000..0213cce
--- /dev/null
+++ b/of-save/ctl/src/test/java/net/onrc/onos/of/ctl/internal/OFChannelHandlerTest.java
@@ -0,0 +1,1569 @@
+package net.onrc.onos.of.ctl.internal;
+
+import static org.easymock.EasyMock.capture;
+import static org.easymock.EasyMock.createMock;
+import static org.easymock.EasyMock.expect;
+import static org.easymock.EasyMock.expectLastCall;
+import static org.easymock.EasyMock.replay;
+import static org.easymock.EasyMock.reset;
+import static org.easymock.EasyMock.verify;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import net.onrc.onos.of.ctl.IOFSwitch;
+import net.onrc.onos.of.ctl.Role;
+import net.onrc.onos.of.ctl.debugcounter.DebugCounter;
+import net.onrc.onos.of.ctl.debugcounter.IDebugCounterService;
+import net.onrc.onos.of.ctl.internal.OFChannelHandler.RoleRecvStatus;
+
+import org.easymock.Capture;
+import org.easymock.CaptureType;
+import org.jboss.netty.channel.Channel;
+import org.jboss.netty.channel.ChannelHandlerContext;
+import org.jboss.netty.channel.ChannelPipeline;
+import org.jboss.netty.channel.ChannelStateEvent;
+import org.jboss.netty.channel.ExceptionEvent;
+import org.jboss.netty.channel.MessageEvent;
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.projectfloodlight.openflow.protocol.OFDescStatsReply;
+import org.projectfloodlight.openflow.protocol.OFExperimenter;
+import org.projectfloodlight.openflow.protocol.OFFactories;
+import org.projectfloodlight.openflow.protocol.OFFactory;
+import org.projectfloodlight.openflow.protocol.OFFeaturesReply;
+import org.projectfloodlight.openflow.protocol.OFGetConfigReply;
+import org.projectfloodlight.openflow.protocol.OFHelloElem;
+import org.projectfloodlight.openflow.protocol.OFMessage;
+import org.projectfloodlight.openflow.protocol.OFNiciraControllerRole;
+import org.projectfloodlight.openflow.protocol.OFPacketIn;
+import org.projectfloodlight.openflow.protocol.OFPacketInReason;
+import org.projectfloodlight.openflow.protocol.OFPortDescStatsReply;
+import org.projectfloodlight.openflow.protocol.OFSetConfig;
+import org.projectfloodlight.openflow.protocol.OFStatsReply;
+import org.projectfloodlight.openflow.protocol.OFStatsRequest;
+import org.projectfloodlight.openflow.protocol.OFStatsType;
+import org.projectfloodlight.openflow.protocol.OFType;
+import org.projectfloodlight.openflow.protocol.OFVersion;
+import org.projectfloodlight.openflow.types.DatapathId;
+import org.projectfloodlight.openflow.types.U32;
+
+/**
+ * Channel handler deals with the switch connection and dispatches
+ * switch messages to the appropriate locations. These Unit Testing cases
+ * test the channeler state machine and role changer. In the first release,
+ * we will focus on OF version 1.0. we will add the testing case for
+ * version 1.3 later.
+ */
+public class OFChannelHandlerTest {
+    private Controller controller;
+    private IDebugCounterService debugCounterService;
+    private OFChannelHandler handler;
+    private Channel channel;
+    private ChannelHandlerContext ctx;
+    private MessageEvent messageEvent;
+    private ChannelStateEvent channelStateEvent;
+    private ChannelPipeline pipeline;
+    private Capture<ExceptionEvent> exceptionEventCapture;
+    private Capture<List<OFMessage>> writeCapture;
+    private OFFeaturesReply featuresReply;
+    private Set<Integer> seenXids = null;
+    private IOFSwitch swImplBase;
+    private OFVersion ofVersion = OFVersion.OF_10;
+    private OFFactory factory13;
+    private OFFactory factory10;
+    private OFFactory factory;
+
+    @Before
+    public void setUp() throws Exception {
+        controller = createMock(Controller.class);
+        ctx = createMock(ChannelHandlerContext.class);
+        channelStateEvent = createMock(ChannelStateEvent.class);
+        channel = createMock(Channel.class);
+        messageEvent = createMock(MessageEvent.class);
+        exceptionEventCapture = new Capture<ExceptionEvent>(CaptureType.ALL);
+        pipeline = createMock(ChannelPipeline.class);
+        writeCapture = new Capture<List<OFMessage>>(CaptureType.ALL);
+        swImplBase = createMock(IOFSwitch.class);
+        seenXids = null;
+        factory13 = OFFactories.getFactory(OFVersion.OF_13);
+        factory10 = OFFactories.getFactory(OFVersion.OF_10);
+        factory = (ofVersion == OFVersion.OF_13) ? factory13 : factory10;
+
+        // TODO: should mock IDebugCounterService and make sure
+        // the expected counters are updated.
+        debugCounterService = new DebugCounter();
+        Controller.Counters counters =
+                new Controller.Counters();
+        counters.createCounters(debugCounterService);
+        expect(controller.getCounters()).andReturn(counters).anyTimes();
+        expect(controller.getOFMessageFactory10()).andReturn(factory10)
+            .anyTimes();
+        expect(controller.getOFMessageFactory13()).andReturn(factory13)
+            .anyTimes();
+        expect(controller.addConnectedSwitch(2000, handler)).andReturn(true)
+            .anyTimes();
+        replay(controller);
+        handler = new OFChannelHandler(controller);
+        verify(controller);
+        reset(controller);
+
+        resetChannel();
+
+        // replay controller. Reset it if you need more specific behavior
+        replay(controller);
+
+        // replay switch. Reset it if you need more specific behavior
+        replay(swImplBase);
+
+        // Mock ctx and channelStateEvent
+        expect(ctx.getChannel()).andReturn(channel).anyTimes();
+        expect(channelStateEvent.getChannel()).andReturn(channel).anyTimes();
+        replay(ctx, channelStateEvent);
+
+        /* Setup an exception event capture on the channel. Right now
+         * we only expect exception events to be send up the channel.
+         * However, it's easy to extend to other events if we need it
+         */
+        pipeline.sendUpstream(capture(exceptionEventCapture));
+        expectLastCall().anyTimes();
+        replay(pipeline);
+        featuresReply = (OFFeaturesReply) buildOFMessage(OFType.FEATURES_REPLY);
+    }
+
+    @After
+    public void tearDown() {
+        /* ensure no exception was thrown */
+        if (exceptionEventCapture.hasCaptured()) {
+            Throwable ex = exceptionEventCapture.getValue().getCause();
+            throw new AssertionError("Unexpected exception: " +
+                    ex.getClass().getName() + "(" + ex + ")");
+        }
+        assertFalse("Unexpected messages have been captured",
+                writeCapture.hasCaptured());
+        // verify all mocks.
+        verify(channel);
+        verify(messageEvent);
+        verify(controller);
+        verify(ctx);
+        verify(channelStateEvent);
+        verify(pipeline);
+        verify(swImplBase);
+
+    }
+
+    /**
+     * Reset the channel mock and set basic method call expectations.
+     *
+     **/
+    void resetChannel() {
+        reset(channel);
+        expect(channel.getPipeline()).andReturn(pipeline).anyTimes();
+        expect(channel.getRemoteAddress()).andReturn(null).anyTimes();
+    }
+
+    /**
+     * reset, setup, and replay the messageEvent mock for the given
+     * messages.
+     */
+    void setupMessageEvent(List<OFMessage> messages) {
+        reset(messageEvent);
+        expect(messageEvent.getMessage()).andReturn(messages).atLeastOnce();
+        replay(messageEvent);
+    }
+
+    /**
+     * reset, setup, and replay the messageEvent mock for the given
+     * messages, mock controller  send message to channel handler.
+     *
+     * This method will reset, start replay on controller, and then verify
+     */
+    void sendMessageToHandlerWithControllerReset(List<OFMessage> messages)
+            throws Exception {
+        verify(controller);
+        reset(controller);
+
+        sendMessageToHandlerNoControllerReset(messages);
+    }
+
+    /**
+     * reset, setup, and replay the messageEvent mock for the given
+     * messages, mock controller  send message to channel handler.
+     *
+     * This method will start replay on controller, and then verify
+     */
+    void sendMessageToHandlerNoControllerReset(List<OFMessage> messages)
+            throws Exception {
+        setupMessageEvent(messages);
+
+        expect(controller.addConnectedSwitch(1000, handler))
+        .andReturn(true).anyTimes();
+        replay(controller);
+
+        handler.messageReceived(ctx, messageEvent);
+        verify(controller);
+    }
+
+    /**
+     * Extract the list of OFMessages that was captured by the Channel.write()
+     * capture. Will check that something was actually captured first. We'll
+     * collapse the messages from multiple writes into a single list of
+     * OFMessages.
+     * Resets the channelWriteCapture.
+     */
+    List<OFMessage> getMessagesFromCapture() {
+        List<OFMessage> msgs = new ArrayList<OFMessage>();
+
+        assertTrue("No write on channel was captured",
+                writeCapture.hasCaptured());
+        List<List<OFMessage>> capturedVals = writeCapture.getValues();
+
+        for (List<OFMessage> oneWriteList: capturedVals) {
+            msgs.addAll(oneWriteList);
+        }
+        writeCapture.reset();
+        return msgs;
+    }
+
+
+    /**
+     * Verify that the given exception event capture (as returned by
+     * getAndInitExceptionCapture) has thrown an exception of the given
+     * expectedExceptionClass.
+     * Resets the capture
+     */
+    void verifyExceptionCaptured(
+            Class<? extends Throwable> expectedExceptionClass) {
+        assertTrue("Excpected exception not thrown",
+                exceptionEventCapture.hasCaptured());
+        Throwable caughtEx = exceptionEventCapture.getValue().getCause();
+        assertEquals(expectedExceptionClass, caughtEx.getClass());
+        exceptionEventCapture.reset();
+    }
+
+    /**
+     * Make sure that the transaction ids in the given messages are
+     * not 0 and differ between each other.
+     * While it's not a defect per se if the xids are we want to ensure
+     * we use different ones for each message we send.
+     */
+    void verifyUniqueXids(List<OFMessage> msgs) {
+        if (seenXids == null) {
+            seenXids = new HashSet<Integer>();
+        }
+        for (OFMessage m: msgs)  {
+            int xid = (int) m.getXid();
+            assertTrue("Xid in messags is 0", xid != 0);
+            assertFalse("Xid " + xid + " has already been used",
+                    seenXids.contains(xid));
+            seenXids.add(xid);
+        }
+    }
+
+
+
+    public void testInitState() throws Exception {
+        OFMessage m = buildOFMessage(OFType.HELLO);
+
+        expect(messageEvent.getMessage()).andReturn(null);
+        replay(channel, messageEvent);
+
+        // We don't expect to receive /any/ messages in init state since
+        // channelConnected moves us to a different state
+        sendMessageToHandlerWithControllerReset(Collections.singletonList(m));
+
+        verifyExceptionCaptured(SwitchStateException.class);
+        assertEquals(OFChannelHandler.ChannelState.INIT,
+                handler.getStateForTesting());
+    }
+
+    /**
+     * move the channel from scratch to WAIT_HELLO state.
+     *
+     */
+    @Test
+    public void moveToWaitHello() throws Exception {
+        resetChannel();
+        channel.write(capture(writeCapture));
+        expectLastCall().andReturn(null).once();
+        replay(channel);
+        // replay unused mocks
+        replay(messageEvent);
+
+        handler.channelConnected(ctx, channelStateEvent);
+
+        List<OFMessage> msgs = getMessagesFromCapture();
+        assertEquals(1, msgs.size());
+        assertEquals(OFType.HELLO, msgs.get(0).getType());
+        assertEquals(OFChannelHandler.ChannelState.WAIT_HELLO,
+                handler.getStateForTesting());
+        //Should verify that the Hello received from the controller
+        //is ALWAYS OF1.3 hello regardless of the switch version
+        assertEquals(OFVersion.OF_13, msgs.get(0).getVersion());
+        verifyUniqueXids(msgs);
+    }
+
+
+    /**
+     * Move the channel from scratch to WAIT_FEATURES_REPLY state.
+     * Builds on moveToWaitHello().
+     * adds testing for WAIT_HELLO state.
+     */
+    @Test
+    public void moveToWaitFeaturesReply() throws Exception {
+        moveToWaitHello();
+        resetChannel();
+        channel.write(capture(writeCapture));
+        expectLastCall().andReturn(null).atLeastOnce();
+        replay(channel);
+
+        OFMessage hello = buildOFMessage(OFType.HELLO);
+        sendMessageToHandlerWithControllerReset(Collections.singletonList(hello));
+
+        List<OFMessage> msgs = getMessagesFromCapture();
+        assertEquals(1, msgs.size());
+        assertEquals(OFType.FEATURES_REQUEST, msgs.get(0).getType());
+        if (ofVersion == OFVersion.OF_10) {
+            assertEquals(OFVersion.OF_10, msgs.get(0).getVersion());
+        }
+        verifyUniqueXids(msgs);
+
+        assertEquals(OFChannelHandler.ChannelState.WAIT_FEATURES_REPLY,
+                handler.getStateForTesting());
+    }
+
+    /**
+     * Move the channel from scratch to WAIT_CONFIG_REPLY state.
+     * Builds on moveToWaitFeaturesReply.
+     * adds testing for WAIT_FEATURES_REPLY state.
+     */
+    @Test
+    public void moveToWaitConfigReply() throws Exception {
+        moveToWaitFeaturesReply();
+
+        resetChannel();
+        channel.write(capture(writeCapture));
+        expectLastCall().andReturn(null).atLeastOnce();
+        replay(channel);
+
+        sendMessageToHandlerWithControllerReset(Collections.<OFMessage>singletonList(featuresReply));
+        List<OFMessage> msgs = getMessagesFromCapture();
+        assertEquals(3, msgs.size());
+        assertEquals(OFType.SET_CONFIG, msgs.get(0).getType());
+        OFSetConfig sc = (OFSetConfig) msgs.get(0);
+        assertEquals((short) 0xffff, sc.getMissSendLen());
+        assertEquals(OFType.BARRIER_REQUEST, msgs.get(1).getType());
+        assertEquals(OFType.GET_CONFIG_REQUEST, msgs.get(2).getType());
+        verifyUniqueXids(msgs);
+        assertEquals(OFChannelHandler.ChannelState.WAIT_CONFIG_REPLY,
+                handler.getStateForTesting());
+    }
+
+    /**
+     * Move the channel from scratch to WAIT_DESCRIPTION_STAT_REPLY state.
+     * Builds on moveToWaitConfigReply().
+     * adds testing for WAIT_CONFIG_REPLY state.
+     */
+    @Test
+    public void moveToWaitDescriptionStatReply() throws Exception {
+        moveToWaitConfigReply();
+        resetChannel();
+        channel.write(capture(writeCapture));
+        expectLastCall().andReturn(null).atLeastOnce();
+        replay(channel);
+
+        OFGetConfigReply cr = (OFGetConfigReply) buildOFMessage(OFType.GET_CONFIG_REPLY);
+
+        sendMessageToHandlerWithControllerReset(Collections.<OFMessage>singletonList(cr));
+
+        List<OFMessage> msgs = getMessagesFromCapture();
+        assertEquals(1, msgs.size());
+        assertEquals(OFType.STATS_REQUEST, msgs.get(0).getType());
+        OFStatsRequest<?> sr = (OFStatsRequest<?>) msgs.get(0);
+        assertEquals(OFStatsType.DESC, sr.getStatsType());
+        verifyUniqueXids(msgs);
+        assertEquals(OFChannelHandler.ChannelState.WAIT_DESCRIPTION_STAT_REPLY,
+                handler.getStateForTesting());
+    }
+
+
+    private OFStatsReply createDescriptionStatsReply() throws IOException {
+        OFStatsReply sr = (OFStatsReply) buildOFMessage(OFType.STATS_REPLY);
+        return sr;
+    }
+
+    /**
+     * Move the channel from scratch to WAIT_INITIAL_ROLE state.
+     * for a switch that does not have a sub-handshake.
+     * Builds on moveToWaitDescriptionStatReply().
+     * adds testing for WAIT_DESCRIPTION_STAT_REPLY state.
+     *
+     */
+    @Test
+    public void moveToWaitInitialRole()
+            throws Exception {
+        moveToWaitDescriptionStatReply();
+
+        long xid = 2000;
+
+        // build the stats reply
+        OFStatsReply sr = createDescriptionStatsReply();
+
+        resetChannel();
+        replay(channel);
+
+        setupMessageEvent(Collections.<OFMessage>singletonList(sr));
+
+        // mock controller
+        reset(controller);
+        reset(swImplBase);
+
+        expect(controller.getOFSwitchInstance((OFDescStatsReply) sr, ofVersion))
+        .andReturn(swImplBase).anyTimes();
+        expect(controller.getDebugCounter())
+        .andReturn(debugCounterService).anyTimes();
+        controller.submitRegistryRequest(1000);
+        expectLastCall().once();
+        replay(controller);
+
+        //TODO: With the description stats message you are sending in the test,
+        //you will end up with an OFSwitchImplBase object
+        //which by default does NOT support the nicira role messages.
+        //If you wish to test the case where Nicira role messages are supported,
+        //then make a comment here that states that this is different
+        //from the default behavior of switchImplbase /or/
+        //send the right desc-stats (for example send what is expected from OVS 1.0)
+
+        if (ofVersion == OFVersion.OF_10) {
+            expect(swImplBase.getAttribute(IOFSwitch.SWITCH_SUPPORTS_NX_ROLE))
+            .andReturn(true).once();
+
+            swImplBase.write(capture(writeCapture));
+            expectLastCall().anyTimes();
+        }
+
+        swImplBase.setOFVersion(ofVersion);
+        expectLastCall().once();
+        swImplBase.setConnected(true);
+        expectLastCall().once();
+        swImplBase.setChannel(channel);
+        expectLastCall().once();
+        swImplBase.setDebugCounterService(controller.getDebugCounter());
+        expectLastCall().once();
+        expect(swImplBase.getStringId())
+        .andReturn(null).anyTimes();
+        swImplBase.setRole(Role.EQUAL);
+        expectLastCall().once();
+
+        expect(swImplBase.getNextTransactionId())
+        .andReturn((int) xid).anyTimes();
+        expect(swImplBase.getId())
+        .andReturn(1000L).once();
+
+        swImplBase.setFeaturesReply(featuresReply);
+        expectLastCall().once();
+        swImplBase.setPortDescReply((OFPortDescStatsReply) null);
+        replay(swImplBase);
+
+        // send the description stats reply
+        handler.messageReceived(ctx, messageEvent);
+
+        List<OFMessage> msgs = getMessagesFromCapture();
+        assertEquals(1, msgs.size());
+        assertEquals(OFType.EXPERIMENTER, msgs.get(0).getType());
+        verifyNiciraMessage((OFExperimenter) msgs.get(0));
+
+        verify(controller);
+        assertEquals(OFChannelHandler.ChannelState.WAIT_INITIAL_ROLE,
+                handler.getStateForTesting());
+    }
+
+    /**
+     * Move the channel from scratch to.
+     *  WAIT_SWITCH_DRIVER_SUB_HANDSHAKE state.
+     * Builds on moveToWaitInitialRole().
+     */
+    @Test
+    public void moveToWaitSubHandshake()
+            throws Exception {
+        moveToWaitInitialRole();
+
+        int xid = 2000;
+        resetChannel();
+        replay(channel);
+
+        reset(swImplBase);
+        // Set the role
+        setupSwitchSendRoleRequestAndVerify(true, xid, Role.SLAVE);
+        assertEquals(OFChannelHandler.ChannelState.WAIT_INITIAL_ROLE,
+                handler.getStateForTesting());
+
+        // build the stats reply
+        OFStatsReply sr = createDescriptionStatsReply();
+        OFMessage rr = getRoleReply(xid, Role.SLAVE);
+        setupMessageEvent(Collections.<OFMessage>singletonList(rr));
+
+        // mock controller
+        reset(controller);
+        reset(swImplBase);
+
+        expect(controller.getOFSwitchInstance((OFDescStatsReply) sr, ofVersion))
+        .andReturn(swImplBase).anyTimes();
+        expect(controller.getDebugCounter())
+        .andReturn(debugCounterService).anyTimes();
+
+        replay(controller);
+
+        expect(swImplBase.getStringId())
+        .andReturn(null).anyTimes();
+        swImplBase.setRole(Role.SLAVE);
+        expectLastCall().once();
+        expect(swImplBase.getNextTransactionId())
+        .andReturn(xid).anyTimes();
+        swImplBase.startDriverHandshake();
+        expectLastCall().once();
+
+        //when this flag is false, state machine will move to
+        //WAIT_SWITCH_DRIVER_SUB_HANDSHAKE state
+        expect(swImplBase.isDriverHandshakeComplete())
+        .andReturn(false).once();
+
+        replay(swImplBase);
+
+        // send the description stats reply
+        handler.messageReceived(ctx, messageEvent);
+
+        assertEquals(OFChannelHandler.ChannelState.WAIT_SWITCH_DRIVER_SUB_HANDSHAKE,
+                handler.getStateForTesting());
+    }
+
+    /**
+     * Move the channel from scratch to WAIT_INITIAL_ROLE state,
+     * then move the channel to EQUAL state based on the switch Role.
+     * This test basically test the switch with role support.
+     * Builds on moveToWaitInitialRole().
+     *
+     * In WAIT_INITIAL_ROLE state, when any messages (except ECHO_REQUEST
+     * and PORT_STATUS), state machine will transit to MASTER or
+     * EQUAL state based on the switch role.
+     */
+    @Test
+    public void moveToSlaveWithHandshakeComplete()
+            throws Exception {
+
+        moveToWaitInitialRole();
+
+        int xid = 2000;
+        resetChannel();
+        replay(channel);
+
+        reset(swImplBase);
+        // Set the role
+        setupSwitchSendRoleRequestAndVerify(true, xid, Role.SLAVE);
+        assertEquals(OFChannelHandler.ChannelState.WAIT_INITIAL_ROLE,
+                handler.getStateForTesting());
+
+        // build the stats reply
+        OFStatsReply sr = createDescriptionStatsReply();
+        OFMessage rr = getRoleReply(xid, Role.SLAVE);
+        setupMessageEvent(Collections.<OFMessage>singletonList(rr));
+
+        // mock controller
+        reset(controller);
+        reset(swImplBase);
+
+        expect(controller.getOFSwitchInstance((OFDescStatsReply) sr, ofVersion))
+        .andReturn(swImplBase).anyTimes();
+
+        expect(controller.getDebugCounter())
+        .andReturn(debugCounterService).anyTimes();
+
+        expect(controller.addActivatedEqualSwitch(1000, swImplBase))
+        .andReturn(true).once();
+        replay(controller);
+
+        expect(swImplBase.getStringId())
+        .andReturn(null).anyTimes();
+        //consult the role in sw to determine the next state.
+        //in this testing case, we are testing that channel handler
+        // will move to EQUAL state when switch role is in SLAVE.
+        expect(swImplBase.getRole()).andReturn(Role.SLAVE).once();
+        swImplBase.setRole(Role.SLAVE);
+        expectLastCall().once();
+
+        expect(swImplBase.getNextTransactionId())
+        .andReturn(xid).anyTimes();
+        expect(swImplBase.getId())
+        .andReturn(1000L).once();
+        swImplBase.startDriverHandshake();
+        expectLastCall().once();
+
+        //when this flag is true, don't need to move interim state
+        //WAIT_SWITCH_DRIVER_SUB_HANDSHAKE. channel handler will
+        //move to corresponding state after consulting the role in sw
+        //This is essentially the same test as the one above,
+        //except for this line
+        expect(swImplBase.isDriverHandshakeComplete())
+        .andReturn(true).once();
+
+        replay(swImplBase);
+
+        // send the description stats reply
+        handler.messageReceived(ctx, messageEvent);
+
+        assertEquals(OFChannelHandler.ChannelState.EQUAL,
+                handler.getStateForTesting());
+    }
+
+    /**
+     * Move the channel from scratch to WAIT_INITIAL_ROLE state,
+     * then to MASTERL state based on the switch Role.
+     * This test basically test the switch with role support.
+     * Builds on moveToWaitInitialRole().
+     *
+     * In WAIT_INITIAL_ROLE state, when any messages (except ECHO_REQUEST
+     * and PORT_STATUS), state machine will transit to MASTER or
+     * EQUAL state based on the switch role.
+     */
+    @Test
+    public void moveToMasterWithHandshakeComplete()
+            throws Exception {
+
+        moveToWaitInitialRole();
+
+        int xid = 2000;
+        resetChannel();
+        replay(channel);
+
+        reset(swImplBase);
+        // Set the role
+        setupSwitchSendRoleRequestAndVerify(true, xid, Role.MASTER);
+        assertEquals(OFChannelHandler.ChannelState.WAIT_INITIAL_ROLE,
+                handler.getStateForTesting());
+
+        // build the stats reply
+        OFStatsReply sr = createDescriptionStatsReply();
+        OFMessage rr = getRoleReply(xid, Role.MASTER);
+        setupMessageEvent(Collections.<OFMessage>singletonList(rr));
+
+        // mock controller
+        reset(controller);
+        reset(swImplBase);
+
+        expect(controller.getOFSwitchInstance((OFDescStatsReply) sr, ofVersion))
+        .andReturn(swImplBase).anyTimes();
+
+        expect(controller.getDebugCounter())
+        .andReturn(debugCounterService).anyTimes();
+
+        expect(controller.addActivatedMasterSwitch(1000, swImplBase))
+        .andReturn(true).once();
+        replay(controller);
+
+        expect(swImplBase.getStringId())
+        .andReturn(null).anyTimes();
+        expect(swImplBase.getRole()).andReturn(Role.MASTER).once();
+        swImplBase.setRole(Role.MASTER);
+        expectLastCall().once();
+
+        expect(swImplBase.getNextTransactionId())
+        .andReturn(xid).anyTimes();
+        expect(swImplBase.getId())
+        .andReturn(1000L).once();
+        swImplBase.startDriverHandshake();
+        expectLastCall().once();
+        expect(swImplBase.isDriverHandshakeComplete())
+        .andReturn(true).once();
+
+        replay(swImplBase);
+
+
+        // send the description stats reply
+        handler.messageReceived(ctx, messageEvent);
+
+        assertEquals(OFChannelHandler.ChannelState.MASTER,
+                handler.getStateForTesting());
+    }
+
+    /**
+     * Move the channel from scratch to
+     *  WAIT_SWITCH_DRIVER_SUB_HANDSHAKE state.
+     * Builds on moveToWaitSubHandshake().
+     */
+    @Test
+    public void moveToEqualViaWaitSubHandshake()
+            throws Exception {
+        moveToWaitSubHandshake();
+
+        long xid = 2000;
+        resetChannel();
+        replay(channel);
+
+        // build the stats reply
+        OFStatsReply sr = createDescriptionStatsReply();
+
+        setupMessageEvent(Collections.<OFMessage>singletonList(sr));
+
+        // mock controller
+        reset(controller);
+        reset(swImplBase);
+
+        expect(controller.getOFSwitchInstance((OFDescStatsReply) sr, ofVersion))
+        .andReturn(swImplBase).anyTimes();
+        expect(controller.getDebugCounter())
+        .andReturn(debugCounterService).anyTimes();
+
+        expect(controller.addActivatedEqualSwitch(1000, swImplBase))
+        .andReturn(true).once();
+        replay(controller);
+
+        expect(swImplBase.getStringId())
+        .andReturn(null).anyTimes();
+        expect(swImplBase.getRole()).andReturn(Role.SLAVE).once();
+        expect(swImplBase.getNextTransactionId())
+        .andReturn((int) xid).anyTimes();
+        expect(swImplBase.getId())
+        .andReturn(1000L).once();
+
+        swImplBase.processDriverHandshakeMessage(sr);
+        expectLastCall().once();
+        expect(swImplBase.isDriverHandshakeComplete())
+        .andReturn(true).once();
+
+        replay(swImplBase);
+
+        // send the description stats reply
+        handler.messageReceived(ctx, messageEvent);
+
+        assertEquals(OFChannelHandler.ChannelState.EQUAL,
+                handler.getStateForTesting());
+    }
+
+    /**
+     * Move the channel from scratch to
+     *  WAIT_SWITCH_DRIVER_SUB_HANDSHAKE state.
+     * Builds on moveToWaitSubHandshake().
+     */
+    @Test
+    public void moveToMasterViaWaitSubHandshake()
+            throws Exception {
+        moveToWaitSubHandshake();
+
+        long xid = 2000;
+        resetChannel();
+        replay(channel);
+
+        // In this state, any messages except echo request, port status and
+        // error go to the switch sub driver handshake. Once the switch reports
+        // that its sub driver handshake is complete (#isDriverHandshakeComplete
+        // return true) then the channel handle consults the switch role and
+        // moves the state machine to the appropriate state (MASTER or EQUALS).
+        // In this test we expect the state machine to end up in MASTER state.
+        OFStatsReply sr = createDescriptionStatsReply();
+
+        setupMessageEvent(Collections.<OFMessage>singletonList(sr));
+
+        // mock controller
+        reset(controller);
+        reset(swImplBase);
+
+        expect(controller.getOFSwitchInstance((OFDescStatsReply) sr, ofVersion))
+        .andReturn(swImplBase).anyTimes();
+
+        expect(controller.getDebugCounter())
+        .andReturn(debugCounterService).anyTimes();
+        expect(controller.addActivatedMasterSwitch(1000, swImplBase))
+        .andReturn(true).once();
+        replay(controller);
+
+        expect(swImplBase.getStringId())
+        .andReturn(null).anyTimes();
+        expect(swImplBase.getRole()).andReturn(Role.MASTER).once();
+        expect(swImplBase.getNextTransactionId())
+        .andReturn((int) xid).anyTimes();
+        expect(swImplBase.getId())
+        .andReturn(1000L).once();
+
+        swImplBase.processDriverHandshakeMessage(sr);
+        expectLastCall().once();
+        expect(swImplBase.isDriverHandshakeComplete())
+        .andReturn(true).once();
+
+        replay(swImplBase);
+
+        // send the description stats reply
+        handler.messageReceived(ctx, messageEvent);
+        verify(controller);
+        assertEquals(OFChannelHandler.ChannelState.MASTER,
+                handler.getStateForTesting());
+    }
+
+    /**
+     * Test the behavior in WAIT_SWITCH_DRIVER_SUB_HANDSHAKE state.
+     * ECHO_REQUEST message received case.
+     */
+    @Test
+    public void testWaitSwitchDriverSubhandshake() throws Exception {
+        moveToWaitSubHandshake();
+
+        long xid = 2000;
+        resetChannel();
+        channel.write(capture(writeCapture));
+        expectLastCall().andReturn(null).atLeastOnce();
+        replay(channel);
+
+        OFMessage er = buildOFMessage(OFType.ECHO_REQUEST);
+
+        setupMessageEvent(Collections.<OFMessage>singletonList(er));
+
+        // mock controller
+        reset(controller);
+        reset(swImplBase);
+
+        expect(controller.getOFMessageFactory10()).andReturn(factory10);
+        expect(controller.getDebugCounter())
+        .andReturn(debugCounterService).anyTimes();
+
+        replay(controller);
+
+        expect(swImplBase.getStringId())
+        .andReturn(null).anyTimes();
+        expect(swImplBase.getNextTransactionId())
+        .andReturn((int) xid).anyTimes();
+
+        replay(swImplBase);
+
+        handler.messageReceived(ctx, messageEvent);
+
+        List<OFMessage> msgs = getMessagesFromCapture();
+        assertEquals(1, msgs.size());
+        assertEquals(OFType.ECHO_REPLY, msgs.get(0).getType());
+        verifyUniqueXids(msgs);
+        assertEquals(OFChannelHandler.ChannelState.WAIT_SWITCH_DRIVER_SUB_HANDSHAKE,
+                handler.getStateForTesting());
+    }
+
+    /**
+     * Helper.
+     * Verify that the given OFMessage is a correct Nicira RoleRequest message.
+     */
+    private void verifyNiciraMessage(OFExperimenter ofMessage) {
+
+        int vendor = (int) ofMessage.getExperimenter();
+        assertEquals(vendor, 0x2320); // magic number representing nicira
+    }
+
+    /**
+     * Setup the mock switch and write capture for a role request, set the
+     * role and verify mocks.
+     * @param supportsNxRole whether the switch supports role request messages
+     * to setup the attribute. This must be null (don't yet know if roles
+     * supported: send to check) or true.
+     * @param xid The xid to use in the role request
+     * @param role The role to send
+     * @throws IOException
+     */
+    private void setupSwitchSendRoleRequestAndVerify(Boolean supportsNxRole,
+            int xid,
+            Role role) throws IOException {
+
+        RoleRecvStatus expectation = RoleRecvStatus.MATCHED_SET_ROLE;
+
+        expect(swImplBase.getAttribute(IOFSwitch.SWITCH_SUPPORTS_NX_ROLE))
+        .andReturn(supportsNxRole).atLeastOnce();
+
+        if (supportsNxRole != null && supportsNxRole) {
+            expect(swImplBase.getNextTransactionId()).andReturn(xid).once();
+            swImplBase.write(capture(writeCapture));
+            expectLastCall().anyTimes();
+        }
+        replay(swImplBase);
+
+        handler.sendRoleRequest(role, expectation);
+
+        if (supportsNxRole != null && supportsNxRole) {
+            List<OFMessage> msgs = getMessagesFromCapture();
+            assertEquals(1, msgs.size());
+            verifyNiciraMessage((OFExperimenter) msgs.get(0));
+        }
+    }
+
+    /**
+     * Setup the mock switch for a role change request where the switch
+     * does not support roles.
+     *
+     * Needs to verify and reset the controller since we need to set
+     * an expectation
+     */
+    private void setupSwitchRoleChangeUnsupported(int xid,
+            Role role) {
+        boolean supportsNxRole = false;
+        RoleRecvStatus expectation = RoleRecvStatus.NO_REPLY;
+        reset(swImplBase);
+        expect(swImplBase.getAttribute(IOFSwitch.SWITCH_SUPPORTS_NX_ROLE))
+        .andReturn(supportsNxRole).atLeastOnce();
+        // TODO: hmmm. While it's not incorrect that we set the attribute
+        // again it looks odd. Maybe change
+        swImplBase.setAttribute(IOFSwitch.SWITCH_SUPPORTS_NX_ROLE, supportsNxRole);
+        expectLastCall().anyTimes();
+
+        replay(swImplBase);
+
+        handler.sendRoleRequest(role, expectation);
+
+        verify(swImplBase);
+    }
+
+    /*
+     * Return a Nicira RoleReply message for the given role.
+     */
+    private OFMessage getRoleReply(long xid, Role role) {
+
+        OFNiciraControllerRole nr = null;
+
+        switch(role) {
+        case MASTER:
+            nr = OFNiciraControllerRole.ROLE_MASTER;
+            break;
+        case EQUAL:
+            nr = OFNiciraControllerRole.ROLE_SLAVE;
+            break;
+        case SLAVE:
+            nr = OFNiciraControllerRole.ROLE_SLAVE;
+            break;
+        default: //handled below
+        }
+        OFMessage m = factory10.buildNiciraControllerRoleReply()
+                .setRole(nr)
+                .setXid(xid)
+                .build();
+        return m;
+    }
+
+    /**
+     * Move the channel from scratch to MASTER state.
+     * Builds on moveToWaitInitialRole().
+     * adds testing for WAIT_INITAL_ROLE state.
+     *
+     * This method tests the case that the switch does NOT support roles.
+     * In ONOS if the switch-driver says that nicira-role messages are not
+     * supported, then ONOS does NOT send role-request messages
+     * (see handleUnsentRoleMessage())
+     */
+    @Test
+    public void testInitialMoveToMasterNoRole() throws Exception {
+        int xid = 43;
+        // first, move us to WAIT_INITIAL_ROLE_STATE
+
+        moveToWaitInitialRole();
+        assertEquals(OFChannelHandler.ChannelState.WAIT_INITIAL_ROLE,
+                handler.getStateForTesting());
+
+        OFStatsReply sr = createDescriptionStatsReply();
+
+        reset(controller);
+        reset(swImplBase);
+
+        expect(controller.getOFSwitchInstance((OFDescStatsReply) sr, ofVersion))
+        .andReturn(swImplBase).anyTimes();
+
+        expect(controller.getDebugCounter())
+        .andReturn(debugCounterService).anyTimes();
+
+        expect(controller.addActivatedMasterSwitch(1000, swImplBase))
+        .andReturn(true).once();
+        replay(controller);
+
+        reset(swImplBase);
+        swImplBase.setRole(Role.MASTER);
+        expectLastCall().once();
+        swImplBase.startDriverHandshake();
+        expectLastCall().once();
+        expect(swImplBase.isDriverHandshakeComplete())
+        .andReturn(true).once();
+        expect(swImplBase.getStringId())
+        .andReturn(null).anyTimes();
+        expect(swImplBase.getRole()).andReturn(Role.MASTER).once();
+
+        expect(swImplBase.getId())
+        .andReturn(1000L).once();
+        // Set the role
+        setupSwitchSendRoleRequestAndVerify(false, xid, Role.MASTER);
+
+        assertEquals(OFChannelHandler.ChannelState.MASTER,
+                handler.getStateForTesting());
+    }
+
+    /**
+     * Move the channel from scratch to WAIT_INITIAL_ROLE state.
+     * Builds on moveToWaitInitialRole().
+     * adds testing for WAIT_INITAL_ROLE state
+     *
+     * We let the initial role request time out. Role support should be
+     * disabled but the switch should be activated.
+     */
+    /* TBD
+        @Test
+        public void testInitialMoveToMasterTimeout() throws Exception {
+            int timeout = 50;
+            handler.useRoleChangerWithOtherTimeoutForTesting(timeout);
+            int xid = 4343;
+
+            // first, move us to WAIT_INITIAL_ROLE_STATE
+
+            moveToWaitInitialRole();
+            assertEquals(OFChannelHandler.ChannelState.WAIT_INITIAL_ROLE,
+                    handler.getStateForTesting());
+
+            // prepare mocks and inject the role reply message
+            reset(swImplBase);
+            // Set the role
+            swImplBase.setRole(Role.MASTER);
+            expectLastCall().once();
+            swImplBase.startDriverHandshake();
+            expectLastCall().once();
+            expect(swImplBase.isDriverHandshakeComplete())
+            .andReturn(false).once();
+            if (ofVersion == OFVersion.OF_10) {
+                expect(swImplBase.getAttribute(IOFSwitch.SWITCH_SUPPORTS_NX_ROLE))
+                 .andReturn(true).once();
+
+                swImplBase.write(capture(writeCapture),
+                        EasyMock.<FloodlightContext>anyObject());
+                expectLastCall().anyTimes();
+             }
+            expect(swImplBase.getNextTransactionId()).andReturn(xid).once();
+
+            assertEquals(OFChannelHandler.ChannelState.WAIT_INITIAL_ROLE,
+                    handler.getStateForTesting());
+
+            // Set the role
+            setupSwitchSendRoleRequestAndVerify(null, xid, Role.MASTER);
+            assertEquals(OFChannelHandler.ChannelState.WAIT_INITIAL_ROLE,
+                    handler.getStateForTesting());
+
+            OFMessage m = buildOFMessage(OFType.ECHO_REPLY);
+
+            setupMessageEvent(Collections.<OFMessage>singletonList(m));
+
+            Thread.sleep(timeout+5);
+
+            verify(controller);
+            reset(controller);
+
+            expect(controller.addActivatedMasterSwitch(1000, swImplBase))
+            .andReturn(true).once();
+            controller.flushAll();
+            expectLastCall().once();
+
+            replay(controller);
+
+            handler.messageReceived(ctx, messageEvent);
+
+            assertEquals(OFChannelHandler.ChannelState.MASTER,
+                    handler.getStateForTesting());
+
+        }
+
+     */
+    /**
+     * Move the channel from scratch to SLAVE state.
+     * Builds on doMoveToWaitInitialRole().
+     * adds testing for WAIT_INITAL_ROLE state
+     *
+     * This method tests the case that the switch does NOT support roles.
+     * The channel handler still needs to send the initial request to find
+     * out that whether the switch supports roles.
+     *
+     */
+    @Test
+    public void testInitialMoveToSlaveNoRole() throws Exception {
+        int xid = 44;
+        // first, move us to WAIT_INITIAL_ROLE_STATE
+        moveToWaitInitialRole();
+        assertEquals(OFChannelHandler.ChannelState.WAIT_INITIAL_ROLE,
+                handler.getStateForTesting());
+
+        reset(swImplBase);
+        // Set the role
+        setupSwitchSendRoleRequestAndVerify(false, xid, Role.SLAVE);
+        assertEquals(OFChannelHandler.ChannelState.WAIT_INITIAL_ROLE,
+                handler.getStateForTesting());
+
+    }
+
+    /**
+     * Move the channel from scratch to SLAVE state.
+     * Builds on doMoveToWaitInitialRole().
+     * adds testing for WAIT_INITAL_ROLE state
+     *
+     * We let the initial role request time out. The switch should be
+     * disconnected
+     */
+    /* TBD
+        @Test
+        public void testInitialMoveToSlaveTimeout() throws Exception {
+            int timeout = 50;
+            handler.useRoleChangerWithOtherTimeoutForTesting(timeout);
+            int xid = 4444;
+
+            // first, move us to WAIT_INITIAL_ROLE_STATE
+            moveToWaitInitialRole();
+            assertEquals(OFChannelHandler.ChannelState.WAIT_INITIAL_ROLE,
+                    handler.getStateForTesting());
+
+            // Set the role
+            setupSwitchSendRoleRequestAndVerify(null, xid, Role.SLAVE);
+            assertEquals(OFChannelHandler.ChannelState.WAIT_INITIAL_ROLE,
+                    handler.getStateForTesting());
+
+            // prepare mocks and inject the role reply message
+            reset(sw);
+            sw.setAttribute(IOFSwitch.SWITCH_SUPPORTS_NX_ROLE, false);
+            expectLastCall().once();
+            sw.setRole(Role.SLAVE);
+            expectLastCall().once();
+            sw.disconnectSwitch(); // Make sure we disconnect
+            expectLastCall().once();
+            replay(sw);
+
+            OFMessage m = buildOFMessage(OFType.ECHO_REPLY);
+
+            Thread.sleep(timeout+5);
+
+            sendMessageToHandlerWithControllerReset(Collections.singletonList(m));
+        }
+
+     */
+    /**
+     * Move channel from scratch to WAIT_INITIAL_STATE, then MASTER,
+     * then SLAVE for cases where the switch does not support roles.
+     * I.e., the final SLAVE transition should disconnect the switch.
+     */
+    @Test
+    public void testNoRoleInitialToMasterToSlave() throws Exception {
+        int xid = 46;
+        reset(swImplBase);
+        replay(swImplBase);
+
+        reset(controller);
+        replay(controller);
+
+        // First, lets move the state to MASTER without role support
+        testInitialMoveToMasterNoRole();
+        assertEquals(OFChannelHandler.ChannelState.MASTER,
+                handler.getStateForTesting());
+
+        // try to set master role again. should be a no-op
+        setupSwitchRoleChangeUnsupported(xid, Role.MASTER);
+
+        assertEquals(OFChannelHandler.ChannelState.MASTER,
+                handler.getStateForTesting());
+
+        setupSwitchRoleChangeUnsupported(xid, Role.SLAVE);
+        //switch does not support role message. there is no role set
+        assertEquals(OFChannelHandler.ChannelState.MASTER,
+                handler.getStateForTesting());
+
+    }
+
+    /**
+     * Move the channel to MASTER state.
+     * Expects that the channel is in MASTER or SLAVE state.
+     *
+     */
+    public void changeRoleToMasterWithRequest() throws Exception {
+        int xid = 4242;
+
+        assertTrue("This method can only be called when handler is in " +
+                "MASTER or SLAVE role", handler.isHandshakeComplete());
+
+        reset(swImplBase);
+        reset(controller);
+        // Set the role
+        setupSwitchSendRoleRequestAndVerify(true, xid, Role.MASTER);
+
+        // prepare mocks and inject the role reply message
+
+        reset(controller);
+        expect(controller.addActivatedMasterSwitch(1000, swImplBase))
+        .andReturn(true).once();
+        OFMessage reply = getRoleReply(xid, Role.MASTER);
+
+        // sendMessageToHandler will verify and rest controller mock
+
+        OFStatsReply sr = createDescriptionStatsReply();
+        setupMessageEvent(Collections.<OFMessage>singletonList(reply));
+
+        // mock controller
+        reset(controller);
+        reset(swImplBase);
+
+        expect(controller.getOFSwitchInstance((OFDescStatsReply) sr, ofVersion))
+        .andReturn(swImplBase).anyTimes();
+
+        expect(controller.getDebugCounter())
+        .andReturn(debugCounterService).anyTimes();
+        controller.transitionToMasterSwitch(1000);
+        expectLastCall().once();
+
+        replay(controller);
+
+        expect(swImplBase.getStringId())
+        .andReturn(null).anyTimes();
+        expect(swImplBase.getRole()).andReturn(Role.EQUAL).atLeastOnce();
+        expect(swImplBase.getNextTransactionId())
+        .andReturn(xid).anyTimes();
+        expect(swImplBase.getId())
+        .andReturn(1000L).once();
+
+        swImplBase.setRole(Role.MASTER);
+        expectLastCall().once();
+        replay(swImplBase);
+
+        // send the description stats reply
+        handler.messageReceived(ctx, messageEvent);
+
+        assertEquals(OFChannelHandler.ChannelState.MASTER,
+                handler.getStateForTesting());
+    }
+
+    /**
+     * Move the channel to SLAVE state.
+     * Expects that the channel is in MASTER or SLAVE state.
+     *
+     */
+    public void changeRoleToSlaveWithRequest() throws Exception {
+        int xid = 2323;
+
+        assertTrue("This method can only be called when handler is in " +
+                "MASTER or SLAVE role", handler.isHandshakeComplete());
+
+        // Set the role
+        reset(controller);
+        reset(swImplBase);
+
+        swImplBase.write(capture(writeCapture));
+        expectLastCall().anyTimes();
+
+        expect(swImplBase.getNextTransactionId())
+        .andReturn(xid).anyTimes();
+
+
+        if (ofVersion == OFVersion.OF_10) {
+            expect(swImplBase.getAttribute(IOFSwitch.SWITCH_SUPPORTS_NX_ROLE))
+            .andReturn(true).once();
+
+            swImplBase.write(capture(writeCapture));
+            expectLastCall().anyTimes();
+        }
+        replay(swImplBase);
+
+        handler.sendRoleRequest(Role.SLAVE, RoleRecvStatus.MATCHED_SET_ROLE);
+
+        List<OFMessage> msgs = getMessagesFromCapture();
+        assertEquals(1, msgs.size());
+        verifyNiciraMessage((OFExperimenter) msgs.get(0));
+
+
+        OFMessage reply = getRoleReply(xid, Role.SLAVE);
+        OFStatsReply sr = createDescriptionStatsReply();
+        setupMessageEvent(Collections.<OFMessage>singletonList(reply));
+
+        // mock controller
+        reset(controller);
+        reset(swImplBase);
+
+        controller.transitionToEqualSwitch(1000);
+        expectLastCall().once();
+        expect(controller.getOFSwitchInstance((OFDescStatsReply) sr, ofVersion))
+        .andReturn(swImplBase).anyTimes();
+
+        expect(controller.getDebugCounter())
+        .andReturn(debugCounterService).anyTimes();
+
+        replay(controller);
+
+        expect(swImplBase.getStringId())
+        .andReturn(null).anyTimes();
+        expect(swImplBase.getRole()).andReturn(Role.MASTER).atLeastOnce();
+        expect(swImplBase.getNextTransactionId())
+        .andReturn(xid).anyTimes();
+
+        // prepare mocks and inject the role reply message
+        swImplBase.setRole(Role.SLAVE);
+        expectLastCall().once();
+        expect(swImplBase.getId())
+        .andReturn(1000L).once();
+        replay(swImplBase);
+
+        handler.messageReceived(ctx, messageEvent);
+
+        assertEquals(OFChannelHandler.ChannelState.EQUAL,
+                handler.getStateForTesting());
+    }
+
+    @Test
+    public void testMultiRoleChange1() throws Exception {
+        moveToMasterWithHandshakeComplete();
+        changeRoleToMasterWithRequest();
+        changeRoleToSlaveWithRequest();
+        changeRoleToSlaveWithRequest();
+        changeRoleToMasterWithRequest();
+        changeRoleToSlaveWithRequest();
+    }
+
+    @Test
+    public void testMultiRoleChange2() throws Exception {
+        moveToSlaveWithHandshakeComplete();
+        changeRoleToMasterWithRequest();
+        changeRoleToSlaveWithRequest();
+        changeRoleToSlaveWithRequest();
+        changeRoleToMasterWithRequest();
+        changeRoleToSlaveWithRequest();
+    }
+
+    /**
+     * Start from scratch and reply with an unexpected error to the role
+     * change request.
+     * Builds on doMoveToWaitInitialRole()
+     * adds testing for WAIT_INITAL_ROLE state
+     */
+    /* TBD
+        @Test
+        public void testInitialRoleChangeOtherError() throws Exception {
+            int xid = 4343;
+            // first, move us to WAIT_INITIAL_ROLE_STATE
+            moveToWaitInitialRole();
+            assertEquals(OFChannelHandler.ChannelState.WAIT_INITIAL_ROLE,
+                    handler.getStateForTesting());
+
+            reset(swImplBase);
+            // Set the role
+            setupSwitchSendRoleRequestAndVerify(true, xid, Role.MASTER);
+            assertEquals(OFChannelHandler.ChannelState.WAIT_INITIAL_ROLE,
+                    handler.getStateForTesting());
+
+
+            // FIXME: shouldn't use ordinal(), but OFError is broken
+
+            OFMessage err = factory.errorMsgs().buildBadActionErrorMsg()
+                    .setCode(OFBadActionCode.BAD_LEN)
+                    .setXid(2000)
+                    .build();
+            verify(swImplBase);
+            reset(swImplBase);
+            replay(swImplBase);
+            sendMessageToHandlerWithControllerReset(Collections.singletonList(err));
+
+            verifyExceptionCaptured(SwitchStateException.class);
+        }
+     */
+    /**
+     * Test dispatch of messages while in MASTER role.
+     */
+    @Test
+    public void testMessageDispatchMaster() throws Exception {
+
+        moveToMasterWithHandshakeComplete();
+
+        // Send packet in. expect dispatch
+        OFPacketIn pi = (OFPacketIn)
+                buildOFMessage(OFType.PACKET_IN);
+        setupMessageEvent(Collections.<OFMessage>singletonList(pi));
+
+        reset(swImplBase);
+        swImplBase.handleMessage(pi);
+        expectLastCall().once();
+        replay(swImplBase);
+        // send the description stats reply
+        handler.messageReceived(ctx, messageEvent);
+
+        assertEquals(OFChannelHandler.ChannelState.MASTER,
+                handler.getStateForTesting());
+
+        verify(controller);
+        // TODO: many more to go
+    }
+
+    /**
+     * Test port status message handling while MASTER.
+     *
+     */
+    /* Patrick: TBD
+        @Test
+        public void testPortStatusMessageMaster() throws Exception {
+            long dpid = featuresReply.getDatapathId().getLong();
+            testInitialMoveToMasterWithRole();
+            List<OFPortDesc> ports = new ArrayList<OFPortDesc>();
+            // A dummy port.
+            OFPortDesc p = factory.buildPortDesc()
+                        .setName("Eth1")
+                        .setPortNo(OFPort.ofInt(1))
+                        .build();
+            ports.add(p);
+
+            p.setName("Port1");
+            p.setPortNumber((short)1);
+
+            OFPortStatus ps = (OFPortStatus)buildOFMessage(OFType.PORT_STATUS);
+            ps.setDesc(p);
+
+            // The events we expect sw.handlePortStatus to return
+            // We'll just use the same list for all valid OFPortReasons and add
+            // arbitrary events for arbitrary ports that are not necessarily
+            // related to the port status message. Our goal
+            // here is not to return the correct set of events but the make sure
+            // that a) sw.handlePortStatus is called
+            //      b) the list of events sw.handlePortStatus returns is sent
+            //         as IOFSwitchListener notifications.
+            OrderedCollection<PortChangeEvent> events =
+                    new LinkedHashSetWrapper<PortChangeEvent>();
+            ImmutablePort p1 = ImmutablePort.create("eth1", (short)1);
+            ImmutablePort p2 = ImmutablePort.create("eth2", (short)2);
+            ImmutablePort p3 = ImmutablePort.create("eth3", (short)3);
+            ImmutablePort p4 = ImmutablePort.create("eth4", (short)4);
+            ImmutablePort p5 = ImmutablePort.create("eth5", (short)5);
+            events.add(new PortChangeEvent(p1, PortChangeType.ADD));
+            events.add(new PortChangeEvent(p2, PortChangeType.DELETE));
+            events.add(new PortChangeEvent(p3, PortChangeType.UP));
+            events.add(new PortChangeEvent(p4, PortChangeType.DOWN));
+            events.add(new PortChangeEvent(p5, PortChangeType.OTHER_UPDATE));
+
+
+            for (OFPortReason reason: OFPortReason.values()) {
+                ps.setReason(reason.getReasonCode());
+
+                reset(sw);
+                expect(sw.getId()).andReturn(dpid).anyTimes();
+
+                expect(sw.processOFPortStatus(ps)).andReturn(events).once();
+                replay(sw);
+
+                reset(controller);
+                controller.notifyPortChanged(sw, p1, PortChangeType.ADD);
+                controller.notifyPortChanged(sw, p2, PortChangeType.DELETE);
+                controller.notifyPortChanged(sw, p3, PortChangeType.UP);
+                controller.notifyPortChanged(sw, p4, PortChangeType.DOWN);
+                controller.notifyPortChanged(sw, p5, PortChangeType.OTHER_UPDATE);
+                sendMessageToHandlerNoControllerReset(
+                        Collections.<OFMessage>singletonList(ps));
+                verify(sw);
+                verify(controller);
+            }
+        }
+
+     */
+    /**
+     * Build an OF message.
+     * @throws IOException
+     */
+    private OFMessage buildOFMessage(OFType t) throws IOException {
+        OFMessage m = null;
+        switch (t) {
+
+        case HELLO:
+            // The OF protocol requires us to start things off by sending the highest
+            // version of the protocol supported.
+
+            // bitmap represents OF1.0 (ofp_version=0x01) and OF1.3 (ofp_version=0x04)
+            // see Sec. 7.5.1 of the OF1.3.4 spec
+            if (ofVersion == OFVersion.OF_13) {
+                U32 bitmap = U32.ofRaw(0x00000012);
+                OFHelloElem hem = factory13.buildHelloElemVersionbitmap()
+                    .setBitmaps(Collections.singletonList(bitmap))
+                    .build();
+                m = factory13.buildHello()
+                        .setXid(2000)
+                        .setElements(Collections.singletonList(hem))
+                        .build();
+            } else {
+                m = factory10.buildHello()
+                    .setXid(2000)
+                    .build();
+            }
+            break;
+        case FEATURES_REQUEST:
+            m = factory.buildFeaturesRequest()
+            .setXid(2000)
+            .build();
+            break;
+        case FEATURES_REPLY:
+
+            m = factory.buildFeaturesReply()
+            .setDatapathId(DatapathId.of(1000L))
+            .setXid(2000)
+            .build();
+            break;
+        case SET_CONFIG:
+            m = factory.buildSetConfig()
+            .setMissSendLen((short) 0xffff)
+            .setXid(2000)
+            .build();
+            break;
+        case BARRIER_REQUEST:
+            m = factory.buildBarrierRequest()
+            .setXid(2000)
+            .build();
+            break;
+        case GET_CONFIG_REQUEST:
+            m = factory.buildGetConfigRequest()
+            .setXid(2000)
+            .build();
+            break;
+        case GET_CONFIG_REPLY:
+            m = factory.buildGetConfigReply()
+            .setMissSendLen((short) 0xffff)
+            .setXid(2000)
+            .build();
+            break;
+        case STATS_REQUEST:
+            break;
+        case STATS_REPLY:
+            m = factory.buildDescStatsReply()
+            .setDpDesc("Datapath Description")
+            .setHwDesc("Hardware Secription")
+            .setMfrDesc("Manufacturer Desctiption")
+            .setSerialNum("Serial Number")
+            .setSwDesc("Software Desription")
+            .build();
+            break;
+        case ECHO_REQUEST:
+            m = factory.buildEchoRequest()
+            .setXid(2000)
+            .build();
+            break;
+        case FLOW_REMOVED:
+            break;
+
+        case PACKET_IN:
+            m = factory.buildPacketIn()
+            .setReason(OFPacketInReason.NO_MATCH)
+            .setTotalLen(1500)
+            .setXid(2000)
+            .build();
+            break;
+        case PORT_STATUS:
+            m = factory.buildPortStatus()
+            .setXid(2000)
+            .build();
+            break;
+
+        default:
+            m = factory.buildFeaturesRequest()
+            .setXid(2000)
+            .build();
+            break;
+        }
+
+        return (m);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFActionType.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFActionType.java
new file mode 100644
index 0000000..fe5320d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFActionType.java
@@ -0,0 +1,59 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFActionType {
+     OUTPUT,
+     SET_VLAN_VID,
+     SET_VLAN_PCP,
+     STRIP_VLAN,
+     SET_DL_SRC,
+     SET_DL_DST,
+     SET_NW_SRC,
+     SET_NW_DST,
+     SET_NW_TOS,
+     SET_TP_SRC,
+     SET_TP_DST,
+     ENQUEUE,
+     EXPERIMENTER,
+     SET_NW_ECN,
+     COPY_TTL_OUT,
+     COPY_TTL_IN,
+     SET_MPLS_LABEL,
+     SET_MPLS_TC,
+     SET_MPLS_TTL,
+     DEC_MPLS_TTL,
+     PUSH_VLAN,
+     POP_VLAN,
+     PUSH_MPLS,
+     POP_MPLS,
+     SET_QUEUE,
+     GROUP,
+     SET_NW_TTL,
+     DEC_NW_TTL,
+     SET_FIELD,
+     PUSH_PBB,
+     POP_PBB;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFAggregateStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFAggregateStatsReply.java
new file mode 100644
index 0000000..ce8478d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFAggregateStatsReply.java
@@ -0,0 +1,58 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFAggregateStatsReply extends OFObject, OFStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    U64 getPacketCount();
+    U64 getByteCount();
+    long getFlowCount();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsReply.Builder {
+        OFAggregateStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        U64 getPacketCount();
+        Builder setPacketCount(U64 packetCount);
+        U64 getByteCount();
+        Builder setByteCount(U64 byteCount);
+        long getFlowCount();
+        Builder setFlowCount(long flowCount);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFAggregateStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFAggregateStatsRequest.java
new file mode 100644
index 0000000..e2c6cc2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFAggregateStatsRequest.java
@@ -0,0 +1,67 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFAggregateStatsRequest extends OFObject, OFStatsRequest<OFAggregateStatsReply>, OFRequest<OFAggregateStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    TableId getTableId();
+    OFPort getOutPort();
+    OFGroup getOutGroup() throws UnsupportedOperationException;
+    U64 getCookie() throws UnsupportedOperationException;
+    U64 getCookieMask() throws UnsupportedOperationException;
+    Match getMatch();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsRequest.Builder<OFAggregateStatsReply> {
+        OFAggregateStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        TableId getTableId();
+        Builder setTableId(TableId tableId);
+        OFPort getOutPort();
+        Builder setOutPort(OFPort outPort);
+        OFGroup getOutGroup() throws UnsupportedOperationException;
+        Builder setOutGroup(OFGroup outGroup) throws UnsupportedOperationException;
+        U64 getCookie() throws UnsupportedOperationException;
+        Builder setCookie(U64 cookie) throws UnsupportedOperationException;
+        U64 getCookieMask() throws UnsupportedOperationException;
+        Builder setCookieMask(U64 cookieMask) throws UnsupportedOperationException;
+        Match getMatch();
+        Builder setMatch(Match match);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFAsyncGetReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFAsyncGetReply.java
new file mode 100644
index 0000000..d29b921
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFAsyncGetReply.java
@@ -0,0 +1,61 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFAsyncGetReply extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getPacketInMaskEqualMaster();
+    long getPacketInMaskSlave();
+    long getPortStatusMaskEqualMaster();
+    long getPortStatusMaskSlave();
+    long getFlowRemovedMaskEqualMaster();
+    long getFlowRemovedMaskSlave();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFAsyncGetReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getPacketInMaskEqualMaster();
+        Builder setPacketInMaskEqualMaster(long packetInMaskEqualMaster);
+        long getPacketInMaskSlave();
+        Builder setPacketInMaskSlave(long packetInMaskSlave);
+        long getPortStatusMaskEqualMaster();
+        Builder setPortStatusMaskEqualMaster(long portStatusMaskEqualMaster);
+        long getPortStatusMaskSlave();
+        Builder setPortStatusMaskSlave(long portStatusMaskSlave);
+        long getFlowRemovedMaskEqualMaster();
+        Builder setFlowRemovedMaskEqualMaster(long flowRemovedMaskEqualMaster);
+        long getFlowRemovedMaskSlave();
+        Builder setFlowRemovedMaskSlave(long flowRemovedMaskSlave);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFAsyncGetRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFAsyncGetRequest.java
new file mode 100644
index 0000000..6f52220
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFAsyncGetRequest.java
@@ -0,0 +1,61 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFAsyncGetRequest extends OFObject, OFMessage, OFRequest<OFAsyncGetReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getPacketInMaskEqualMaster();
+    long getPacketInMaskSlave();
+    long getPortStatusMaskEqualMaster();
+    long getPortStatusMaskSlave();
+    long getFlowRemovedMaskEqualMaster();
+    long getFlowRemovedMaskSlave();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFAsyncGetRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getPacketInMaskEqualMaster();
+        Builder setPacketInMaskEqualMaster(long packetInMaskEqualMaster);
+        long getPacketInMaskSlave();
+        Builder setPacketInMaskSlave(long packetInMaskSlave);
+        long getPortStatusMaskEqualMaster();
+        Builder setPortStatusMaskEqualMaster(long portStatusMaskEqualMaster);
+        long getPortStatusMaskSlave();
+        Builder setPortStatusMaskSlave(long portStatusMaskSlave);
+        long getFlowRemovedMaskEqualMaster();
+        Builder setFlowRemovedMaskEqualMaster(long flowRemovedMaskEqualMaster);
+        long getFlowRemovedMaskSlave();
+        Builder setFlowRemovedMaskSlave(long flowRemovedMaskSlave);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFAsyncSet.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFAsyncSet.java
new file mode 100644
index 0000000..ff3927e
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFAsyncSet.java
@@ -0,0 +1,62 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFAsyncSet extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getPacketInMaskEqualMaster();
+    long getPacketInMaskSlave();
+    long getPortStatusMaskEqualMaster();
+    long getPortStatusMaskSlave();
+    long getFlowRemovedMaskEqualMaster();
+    long getFlowRemovedMaskSlave();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFAsyncSet build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getPacketInMaskEqualMaster();
+        Builder setPacketInMaskEqualMaster(long packetInMaskEqualMaster);
+        long getPacketInMaskSlave();
+        Builder setPacketInMaskSlave(long packetInMaskSlave);
+        long getPortStatusMaskEqualMaster();
+        Builder setPortStatusMaskEqualMaster(long portStatusMaskEqualMaster);
+        long getPortStatusMaskSlave();
+        Builder setPortStatusMaskSlave(long portStatusMaskSlave);
+        long getFlowRemovedMaskEqualMaster();
+        Builder setFlowRemovedMaskEqualMaster(long flowRemovedMaskEqualMaster);
+        long getFlowRemovedMaskSlave();
+        Builder setFlowRemovedMaskSlave(long flowRemovedMaskSlave);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBadActionCode.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBadActionCode.java
new file mode 100644
index 0000000..13d5543
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBadActionCode.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBadActionCode {
+     BAD_TYPE,
+     BAD_LEN,
+     BAD_EXPERIMENTER,
+     BAD_EXPERIMENTER_TYPE,
+     BAD_OUT_PORT,
+     BAD_ARGUMENT,
+     EPERM,
+     TOO_MANY,
+     BAD_QUEUE,
+     BAD_OUT_GROUP,
+     MATCH_INCONSISTENT,
+     UNSUPPORTED_ORDER,
+     BAD_TAG,
+     BAD_SET_TYPE,
+     BAD_SET_LEN,
+     BAD_SET_ARGUMENT;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBadInstructionCode.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBadInstructionCode.java
new file mode 100644
index 0000000..dfe86d3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBadInstructionCode.java
@@ -0,0 +1,38 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBadInstructionCode {
+     UNKNOWN_INST,
+     UNSUP_INST,
+     BAD_TABLE_ID,
+     UNSUP_METADATA,
+     UNSUP_METADATA_MASK,
+     UNSUP_EXP_INST,
+     BAD_EXPERIMENTER,
+     BAD_EXPERIMENTER_TYPE,
+     BAD_LEN,
+     EPERM;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBadMatchCode.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBadMatchCode.java
new file mode 100644
index 0000000..02f689a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBadMatchCode.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBadMatchCode {
+     BAD_TYPE,
+     BAD_LEN,
+     BAD_TAG,
+     BAD_DL_ADDR_MASK,
+     BAD_NW_ADDR_MASK,
+     BAD_WILDCARDS,
+     BAD_FIELD,
+     BAD_VALUE,
+     BAD_MASK,
+     BAD_PREREQ,
+     DUP_FIELD,
+     EPERM;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBadRequestCode.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBadRequestCode.java
new file mode 100644
index 0000000..e254cb2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBadRequestCode.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBadRequestCode {
+     BAD_VERSION,
+     BAD_TYPE,
+     BAD_STAT,
+     BAD_EXPERIMENTER,
+     BAD_SUBTYPE,
+     EPERM,
+     BAD_LEN,
+     BUFFER_EMPTY,
+     BUFFER_UNKNOWN,
+     BAD_TABLE_ID,
+     BAD_EXPERIMENTER_TYPE,
+     IS_SLAVE,
+     BAD_PORT,
+     BAD_PACKET,
+     MULTIPART_BUFFER_OVERFLOW;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBarrierReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBarrierReply.java
new file mode 100644
index 0000000..f64f16e
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBarrierReply.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBarrierReply extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFBarrierReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBarrierRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBarrierRequest.java
new file mode 100644
index 0000000..b41e104
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBarrierRequest.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBarrierRequest extends OFObject, OFMessage, OFRequest<OFBarrierReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFBarrierRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnArpIdle.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnArpIdle.java
new file mode 100644
index 0000000..3d1893e
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnArpIdle.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnArpIdle extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    int getVlanVid();
+    IPv4Address getIpv4Addr();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnArpIdle build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        int getVlanVid();
+        Builder setVlanVid(int vlanVid);
+        IPv4Address getIpv4Addr();
+        Builder setIpv4Addr(IPv4Address ipv4Addr);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwClearDataReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwClearDataReply.java
new file mode 100644
index 0000000..78e74c5
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwClearDataReply.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnBwClearDataReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getStatus();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnBwClearDataReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getStatus();
+        Builder setStatus(long status);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwClearDataRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwClearDataRequest.java
new file mode 100644
index 0000000..bb9c2bb
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwClearDataRequest.java
@@ -0,0 +1,47 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnBwClearDataRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnBwClearDataReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnBwClearDataRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwEnableGetReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwEnableGetReply.java
new file mode 100644
index 0000000..e8ae108
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwEnableGetReply.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnBwEnableGetReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getEnabled();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnBwEnableGetReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getEnabled();
+        Builder setEnabled(long enabled);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwEnableGetRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwEnableGetRequest.java
new file mode 100644
index 0000000..15ccbdc
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwEnableGetRequest.java
@@ -0,0 +1,47 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnBwEnableGetRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnBwEnableGetReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnBwEnableGetRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwEnableSetReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwEnableSetReply.java
new file mode 100644
index 0000000..6d25d7e
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwEnableSetReply.java
@@ -0,0 +1,54 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnBwEnableSetReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getEnable();
+    long getStatus();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnBwEnableSetReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getEnable();
+        Builder setEnable(long enable);
+        long getStatus();
+        Builder setStatus(long status);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwEnableSetRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwEnableSetRequest.java
new file mode 100644
index 0000000..2b23800
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnBwEnableSetRequest.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnBwEnableSetRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnBwEnableSetReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getEnable();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnBwEnableSetRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getEnable();
+        Builder setEnable(long enable);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnControllerConnection.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnControllerConnection.java
new file mode 100644
index 0000000..6d11288
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnControllerConnection.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnControllerConnection extends OFObject {
+    OFBsnControllerConnectionState getState();
+    OFAuxId getAuxiliaryId();
+    OFControllerRole getRole();
+    String getUri();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnControllerConnection build();
+        OFBsnControllerConnectionState getState();
+        Builder setState(OFBsnControllerConnectionState state);
+        OFAuxId getAuxiliaryId();
+        Builder setAuxiliaryId(OFAuxId auxiliaryId);
+        OFControllerRole getRole();
+        Builder setRole(OFControllerRole role);
+        String getUri();
+        Builder setUri(String uri);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnControllerConnectionState.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnControllerConnectionState.java
new file mode 100644
index 0000000..df1312f
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnControllerConnectionState.java
@@ -0,0 +1,30 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBsnControllerConnectionState {
+     BSN_CONTROLLER_CONNECTION_STATE_DISCONNECTED,
+     BSN_CONTROLLER_CONNECTION_STATE_CONNECTED;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnControllerConnectionsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnControllerConnectionsReply.java
new file mode 100644
index 0000000..ffa03c4
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnControllerConnectionsReply.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnControllerConnectionsReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    List<OFBsnControllerConnection> getConnections();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnControllerConnectionsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        List<OFBsnControllerConnection> getConnections();
+        Builder setConnections(List<OFBsnControllerConnection> connections);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnControllerConnectionsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnControllerConnectionsRequest.java
new file mode 100644
index 0000000..efee303
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnControllerConnectionsRequest.java
@@ -0,0 +1,47 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnControllerConnectionsRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnControllerConnectionsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnControllerConnectionsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnControllerRoleReason.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnControllerRoleReason.java
new file mode 100644
index 0000000..a8eb119
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnControllerRoleReason.java
@@ -0,0 +1,31 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBsnControllerRoleReason {
+     BSN_CONTROLLER_ROLE_REASON_MASTER_REQUEST,
+     BSN_CONTROLLER_ROLE_REASON_CONFIG,
+     BSN_CONTROLLER_ROLE_REASON_EXPERIMENTER;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterDescStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterDescStatsEntry.java
new file mode 100644
index 0000000..0aa4407
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterDescStatsEntry.java
@@ -0,0 +1,47 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnDebugCounterDescStatsEntry extends OFObject {
+    U64 getCounterId();
+    String getName();
+    String getDescription();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnDebugCounterDescStatsEntry build();
+        U64 getCounterId();
+        Builder setCounterId(U64 counterId);
+        String getName();
+        Builder setName(String name);
+        String getDescription();
+        Builder setDescription(String description);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterDescStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterDescStatsReply.java
new file mode 100644
index 0000000..5f72426
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterDescStatsReply.java
@@ -0,0 +1,57 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnDebugCounterDescStatsReply extends OFObject, OFBsnStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    List<OFBsnDebugCounterDescStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsReply.Builder {
+        OFBsnDebugCounterDescStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        List<OFBsnDebugCounterDescStatsEntry> getEntries();
+        Builder setEntries(List<OFBsnDebugCounterDescStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterDescStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterDescStatsRequest.java
new file mode 100644
index 0000000..ebd3b9b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterDescStatsRequest.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnDebugCounterDescStatsRequest extends OFObject, OFBsnStatsRequest<OFBsnDebugCounterDescStatsReply>, OFRequest<OFBsnDebugCounterDescStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsRequest.Builder<OFBsnDebugCounterDescStatsReply> {
+        OFBsnDebugCounterDescStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterStatsEntry.java
new file mode 100644
index 0000000..f3d28d0
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterStatsEntry.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnDebugCounterStatsEntry extends OFObject {
+    U64 getCounterId();
+    U64 getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnDebugCounterStatsEntry build();
+        U64 getCounterId();
+        Builder setCounterId(U64 counterId);
+        U64 getValue();
+        Builder setValue(U64 value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterStatsReply.java
new file mode 100644
index 0000000..9edf42a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterStatsReply.java
@@ -0,0 +1,57 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnDebugCounterStatsReply extends OFObject, OFBsnStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    List<OFBsnDebugCounterStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsReply.Builder {
+        OFBsnDebugCounterStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        List<OFBsnDebugCounterStatsEntry> getEntries();
+        Builder setEntries(List<OFBsnDebugCounterStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterStatsRequest.java
new file mode 100644
index 0000000..cb2d5f9
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnDebugCounterStatsRequest.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnDebugCounterStatsRequest extends OFObject, OFBsnStatsRequest<OFBsnDebugCounterStatsReply>, OFRequest<OFBsnDebugCounterStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsRequest.Builder<OFBsnDebugCounterStatsReply> {
+        OFBsnDebugCounterStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowChecksumBucketStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowChecksumBucketStatsEntry.java
new file mode 100644
index 0000000..d709799
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowChecksumBucketStatsEntry.java
@@ -0,0 +1,41 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnFlowChecksumBucketStatsEntry extends OFObject {
+    U64 getChecksum();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnFlowChecksumBucketStatsEntry build();
+        U64 getChecksum();
+        Builder setChecksum(U64 checksum);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowChecksumBucketStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowChecksumBucketStatsReply.java
new file mode 100644
index 0000000..4759d45
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowChecksumBucketStatsReply.java
@@ -0,0 +1,57 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnFlowChecksumBucketStatsReply extends OFObject, OFBsnStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    List<OFBsnFlowChecksumBucketStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsReply.Builder {
+        OFBsnFlowChecksumBucketStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        List<OFBsnFlowChecksumBucketStatsEntry> getEntries();
+        Builder setEntries(List<OFBsnFlowChecksumBucketStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowChecksumBucketStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowChecksumBucketStatsRequest.java
new file mode 100644
index 0000000..1f4ed0d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowChecksumBucketStatsRequest.java
@@ -0,0 +1,56 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnFlowChecksumBucketStatsRequest extends OFObject, OFBsnStatsRequest<OFBsnFlowChecksumBucketStatsReply>, OFRequest<OFBsnFlowChecksumBucketStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    TableId getTableId();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsRequest.Builder<OFBsnFlowChecksumBucketStatsReply> {
+        OFBsnFlowChecksumBucketStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        TableId getTableId();
+        Builder setTableId(TableId tableId);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowIdle.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowIdle.java
new file mode 100644
index 0000000..88a2b14
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowIdle.java
@@ -0,0 +1,59 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnFlowIdle extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    U64 getCookie();
+    int getPriority();
+    TableId getTableId();
+    Match getMatch();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnFlowIdle build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        U64 getCookie();
+        Builder setCookie(U64 cookie);
+        int getPriority();
+        Builder setPriority(int priority);
+        TableId getTableId();
+        Builder setTableId(TableId tableId);
+        Match getMatch();
+        Builder setMatch(Match match);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowIdleEnableGetReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowIdleEnableGetReply.java
new file mode 100644
index 0000000..cf38356
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowIdleEnableGetReply.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnFlowIdleEnableGetReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getEnabled();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnFlowIdleEnableGetReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getEnabled();
+        Builder setEnabled(long enabled);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowIdleEnableGetRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowIdleEnableGetRequest.java
new file mode 100644
index 0000000..aacb08c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowIdleEnableGetRequest.java
@@ -0,0 +1,47 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnFlowIdleEnableGetRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnFlowIdleEnableGetReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnFlowIdleEnableGetRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowIdleEnableSetReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowIdleEnableSetReply.java
new file mode 100644
index 0000000..6c0b274
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowIdleEnableSetReply.java
@@ -0,0 +1,54 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnFlowIdleEnableSetReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getEnable();
+    long getStatus();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnFlowIdleEnableSetReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getEnable();
+        Builder setEnable(long enable);
+        long getStatus();
+        Builder setStatus(long status);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowIdleEnableSetRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowIdleEnableSetRequest.java
new file mode 100644
index 0000000..aae991d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnFlowIdleEnableSetRequest.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnFlowIdleEnableSetRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnFlowIdleEnableSetReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getEnable();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnFlowIdleEnableSetRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getEnable();
+        Builder setEnable(long enable);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableBucketStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableBucketStatsEntry.java
new file mode 100644
index 0000000..d69a444
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableBucketStatsEntry.java
@@ -0,0 +1,41 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableBucketStatsEntry extends OFObject {
+    U128 getChecksum();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnGentableBucketStatsEntry build();
+        U128 getChecksum();
+        Builder setChecksum(U128 checksum);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableBucketStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableBucketStatsReply.java
new file mode 100644
index 0000000..0b08078
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableBucketStatsReply.java
@@ -0,0 +1,57 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableBucketStatsReply extends OFObject, OFBsnStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    List<OFBsnGentableBucketStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsReply.Builder {
+        OFBsnGentableBucketStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        List<OFBsnGentableBucketStatsEntry> getEntries();
+        Builder setEntries(List<OFBsnGentableBucketStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableBucketStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableBucketStatsRequest.java
new file mode 100644
index 0000000..72b5983
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableBucketStatsRequest.java
@@ -0,0 +1,56 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableBucketStatsRequest extends OFObject, OFBsnStatsRequest<OFBsnGentableBucketStatsReply>, OFRequest<OFBsnGentableBucketStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    GenTableId getTableId();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsRequest.Builder<OFBsnGentableBucketStatsReply> {
+        OFBsnGentableBucketStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        GenTableId getTableId();
+        Builder setTableId(GenTableId tableId);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableClearReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableClearReply.java
new file mode 100644
index 0000000..d0c7015
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableClearReply.java
@@ -0,0 +1,56 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableClearReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    GenTableId getTableId();
+    long getDeletedCount();
+    long getErrorCount();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnGentableClearReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        GenTableId getTableId();
+        Builder setTableId(GenTableId tableId);
+        long getDeletedCount();
+        Builder setDeletedCount(long deletedCount);
+        long getErrorCount();
+        Builder setErrorCount(long errorCount);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableClearRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableClearRequest.java
new file mode 100644
index 0000000..e61f3f6
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableClearRequest.java
@@ -0,0 +1,56 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableClearRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnGentableClearReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    GenTableId getTableId();
+    U128 getChecksum();
+    U128 getChecksumMask();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnGentableClearRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        GenTableId getTableId();
+        Builder setTableId(GenTableId tableId);
+        U128 getChecksum();
+        Builder setChecksum(U128 checksum);
+        U128 getChecksumMask();
+        Builder setChecksumMask(U128 checksumMask);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableDescStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableDescStatsEntry.java
new file mode 100644
index 0000000..b39fd10
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableDescStatsEntry.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableDescStatsEntry extends OFObject {
+    GenTableId getTableId();
+    String getName();
+    long getBucketsSize();
+    long getMaxEntries();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnGentableDescStatsEntry build();
+        GenTableId getTableId();
+        Builder setTableId(GenTableId tableId);
+        String getName();
+        Builder setName(String name);
+        long getBucketsSize();
+        Builder setBucketsSize(long bucketsSize);
+        long getMaxEntries();
+        Builder setMaxEntries(long maxEntries);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableDescStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableDescStatsReply.java
new file mode 100644
index 0000000..6d2de9d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableDescStatsReply.java
@@ -0,0 +1,57 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableDescStatsReply extends OFObject, OFBsnStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    List<OFBsnGentableDescStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsReply.Builder {
+        OFBsnGentableDescStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        List<OFBsnGentableDescStatsEntry> getEntries();
+        Builder setEntries(List<OFBsnGentableDescStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableDescStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableDescStatsRequest.java
new file mode 100644
index 0000000..8fa686d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableDescStatsRequest.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableDescStatsRequest extends OFObject, OFBsnStatsRequest<OFBsnGentableDescStatsReply>, OFRequest<OFBsnGentableDescStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsRequest.Builder<OFBsnGentableDescStatsReply> {
+        OFBsnGentableDescStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryAdd.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryAdd.java
new file mode 100644
index 0000000..ef358fa
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryAdd.java
@@ -0,0 +1,60 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableEntryAdd extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    GenTableId getTableId();
+    U128 getChecksum();
+    List<OFBsnTlv> getKey();
+    List<OFBsnTlv> getValue();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnGentableEntryAdd build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        GenTableId getTableId();
+        Builder setTableId(GenTableId tableId);
+        U128 getChecksum();
+        Builder setChecksum(U128 checksum);
+        List<OFBsnTlv> getKey();
+        Builder setKey(List<OFBsnTlv> key);
+        List<OFBsnTlv> getValue();
+        Builder setValue(List<OFBsnTlv> value);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryDelete.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryDelete.java
new file mode 100644
index 0000000..79093a3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryDelete.java
@@ -0,0 +1,54 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableEntryDelete extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    GenTableId getTableId();
+    List<OFBsnTlv> getKey();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnGentableEntryDelete build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        GenTableId getTableId();
+        Builder setTableId(GenTableId tableId);
+        List<OFBsnTlv> getKey();
+        Builder setKey(List<OFBsnTlv> key);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryDescStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryDescStatsEntry.java
new file mode 100644
index 0000000..b0783c7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryDescStatsEntry.java
@@ -0,0 +1,48 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableEntryDescStatsEntry extends OFObject {
+    U128 getChecksum();
+    List<OFBsnTlv> getKey();
+    List<OFBsnTlv> getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnGentableEntryDescStatsEntry build();
+        U128 getChecksum();
+        Builder setChecksum(U128 checksum);
+        List<OFBsnTlv> getKey();
+        Builder setKey(List<OFBsnTlv> key);
+        List<OFBsnTlv> getValue();
+        Builder setValue(List<OFBsnTlv> value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryDescStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryDescStatsReply.java
new file mode 100644
index 0000000..c859998
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryDescStatsReply.java
@@ -0,0 +1,57 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableEntryDescStatsReply extends OFObject, OFBsnStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    List<OFBsnGentableEntryDescStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsReply.Builder {
+        OFBsnGentableEntryDescStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        List<OFBsnGentableEntryDescStatsEntry> getEntries();
+        Builder setEntries(List<OFBsnGentableEntryDescStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryDescStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryDescStatsRequest.java
new file mode 100644
index 0000000..ba35738
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryDescStatsRequest.java
@@ -0,0 +1,62 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableEntryDescStatsRequest extends OFObject, OFBsnStatsRequest<OFBsnGentableEntryDescStatsReply>, OFRequest<OFBsnGentableEntryDescStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    GenTableId getTableId();
+    U128 getChecksum();
+    U128 getChecksumMask();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsRequest.Builder<OFBsnGentableEntryDescStatsReply> {
+        OFBsnGentableEntryDescStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        GenTableId getTableId();
+        Builder setTableId(GenTableId tableId);
+        U128 getChecksum();
+        Builder setChecksum(U128 checksum);
+        U128 getChecksumMask();
+        Builder setChecksumMask(U128 checksumMask);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryStatsEntry.java
new file mode 100644
index 0000000..ec0fb5b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryStatsEntry.java
@@ -0,0 +1,45 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableEntryStatsEntry extends OFObject {
+    List<OFBsnTlv> getKey();
+    List<OFBsnTlv> getStats();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnGentableEntryStatsEntry build();
+        List<OFBsnTlv> getKey();
+        Builder setKey(List<OFBsnTlv> key);
+        List<OFBsnTlv> getStats();
+        Builder setStats(List<OFBsnTlv> stats);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryStatsReply.java
new file mode 100644
index 0000000..fd88fb7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryStatsReply.java
@@ -0,0 +1,57 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableEntryStatsReply extends OFObject, OFBsnStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    List<OFBsnGentableEntryStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsReply.Builder {
+        OFBsnGentableEntryStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        List<OFBsnGentableEntryStatsEntry> getEntries();
+        Builder setEntries(List<OFBsnGentableEntryStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryStatsRequest.java
new file mode 100644
index 0000000..90a6475
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableEntryStatsRequest.java
@@ -0,0 +1,62 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableEntryStatsRequest extends OFObject, OFBsnStatsRequest<OFBsnGentableEntryStatsReply>, OFRequest<OFBsnGentableEntryStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    GenTableId getTableId();
+    U128 getChecksum();
+    U128 getChecksumMask();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsRequest.Builder<OFBsnGentableEntryStatsReply> {
+        OFBsnGentableEntryStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        GenTableId getTableId();
+        Builder setTableId(GenTableId tableId);
+        U128 getChecksum();
+        Builder setChecksum(U128 checksum);
+        U128 getChecksumMask();
+        Builder setChecksumMask(U128 checksumMask);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableSetBucketsSize.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableSetBucketsSize.java
new file mode 100644
index 0000000..5066e21
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableSetBucketsSize.java
@@ -0,0 +1,54 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableSetBucketsSize extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    GenTableId getTableId();
+    long getBucketsSize();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnGentableSetBucketsSize build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        GenTableId getTableId();
+        Builder setTableId(GenTableId tableId);
+        long getBucketsSize();
+        Builder setBucketsSize(long bucketsSize);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableStatsEntry.java
new file mode 100644
index 0000000..d4b0cc8
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableStatsEntry.java
@@ -0,0 +1,47 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableStatsEntry extends OFObject {
+    GenTableId getTableId();
+    long getEntryCount();
+    U128 getChecksum();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnGentableStatsEntry build();
+        GenTableId getTableId();
+        Builder setTableId(GenTableId tableId);
+        long getEntryCount();
+        Builder setEntryCount(long entryCount);
+        U128 getChecksum();
+        Builder setChecksum(U128 checksum);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableStatsReply.java
new file mode 100644
index 0000000..f1d4b74
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableStatsReply.java
@@ -0,0 +1,57 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableStatsReply extends OFObject, OFBsnStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    List<OFBsnGentableStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsReply.Builder {
+        OFBsnGentableStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        List<OFBsnGentableStatsEntry> getEntries();
+        Builder setEntries(List<OFBsnGentableStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableStatsRequest.java
new file mode 100644
index 0000000..9fc4b7a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGentableStatsRequest.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGentableStatsRequest extends OFObject, OFBsnStatsRequest<OFBsnGentableStatsReply>, OFRequest<OFBsnGentableStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsRequest.Builder<OFBsnGentableStatsReply> {
+        OFBsnGentableStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetInterfacesReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetInterfacesReply.java
new file mode 100644
index 0000000..951541b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetInterfacesReply.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGetInterfacesReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    List<OFBsnInterface> getInterfaces();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnGetInterfacesReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        List<OFBsnInterface> getInterfaces();
+        Builder setInterfaces(List<OFBsnInterface> interfaces);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetInterfacesRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetInterfacesRequest.java
new file mode 100644
index 0000000..62951a6
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetInterfacesRequest.java
@@ -0,0 +1,47 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGetInterfacesRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnGetInterfacesReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnGetInterfacesRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetIpMaskReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetIpMaskReply.java
new file mode 100644
index 0000000..ddb293b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetIpMaskReply.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGetIpMaskReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    short getIndex();
+    long getMask();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnGetIpMaskReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        short getIndex();
+        Builder setIndex(short index);
+        long getMask();
+        Builder setMask(long mask);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetIpMaskRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetIpMaskRequest.java
new file mode 100644
index 0000000..0b7a63e
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetIpMaskRequest.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGetIpMaskRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnGetIpMaskReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    short getIndex();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnGetIpMaskRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        short getIndex();
+        Builder setIndex(short index);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetL2TableReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetL2TableReply.java
new file mode 100644
index 0000000..41125e7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetL2TableReply.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGetL2TableReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    short getL2TableEnable();
+    int getL2TablePriority();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnGetL2TableReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        short getL2TableEnable();
+        Builder setL2TableEnable(short l2TableEnable);
+        int getL2TablePriority();
+        Builder setL2TablePriority(int l2TablePriority);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetL2TableRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetL2TableRequest.java
new file mode 100644
index 0000000..d7afc84
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetL2TableRequest.java
@@ -0,0 +1,47 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGetL2TableRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnGetL2TableReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnGetL2TableRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetMirroringReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetMirroringReply.java
new file mode 100644
index 0000000..44290fc
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetMirroringReply.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGetMirroringReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    short getReportMirrorPorts();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnGetMirroringReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        short getReportMirrorPorts();
+        Builder setReportMirrorPorts(short reportMirrorPorts);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetMirroringRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetMirroringRequest.java
new file mode 100644
index 0000000..0fc5419
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetMirroringRequest.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGetMirroringRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnGetMirroringReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    short getReportMirrorPorts();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnGetMirroringRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        short getReportMirrorPorts();
+        Builder setReportMirrorPorts(short reportMirrorPorts);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetSwitchPipelineReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetSwitchPipelineReply.java
new file mode 100644
index 0000000..32f5647
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetSwitchPipelineReply.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGetSwitchPipelineReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    String getPipeline();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnGetSwitchPipelineReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        String getPipeline();
+        Builder setPipeline(String pipeline);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetSwitchPipelineRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetSwitchPipelineRequest.java
new file mode 100644
index 0000000..e4ff994
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnGetSwitchPipelineRequest.java
@@ -0,0 +1,47 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnGetSwitchPipelineRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnGetSwitchPipelineReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnGetSwitchPipelineRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnHeader.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnHeader.java
new file mode 100644
index 0000000..1081da9
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnHeader.java
@@ -0,0 +1,47 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnHeader extends OFObject, OFExperimenter {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFExperimenter.Builder {
+        OFBsnHeader build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnHybridGetReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnHybridGetReply.java
new file mode 100644
index 0000000..68946fe
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnHybridGetReply.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnHybridGetReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    short getHybridEnable();
+    int getHybridVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnHybridGetReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        short getHybridEnable();
+        Builder setHybridEnable(short hybridEnable);
+        int getHybridVersion();
+        Builder setHybridVersion(int hybridVersion);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnHybridGetRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnHybridGetRequest.java
new file mode 100644
index 0000000..0f2a690
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnHybridGetRequest.java
@@ -0,0 +1,47 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnHybridGetRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnHybridGetReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnHybridGetRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnImageDescStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnImageDescStatsReply.java
new file mode 100644
index 0000000..9ce6823
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnImageDescStatsReply.java
@@ -0,0 +1,59 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnImageDescStatsReply extends OFObject, OFBsnStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    String getImageChecksum();
+    String getStartupConfigChecksum();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsReply.Builder {
+        OFBsnImageDescStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        String getImageChecksum();
+        Builder setImageChecksum(String imageChecksum);
+        String getStartupConfigChecksum();
+        Builder setStartupConfigChecksum(String startupConfigChecksum);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnImageDescStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnImageDescStatsRequest.java
new file mode 100644
index 0000000..154a137
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnImageDescStatsRequest.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnImageDescStatsRequest extends OFObject, OFBsnStatsRequest<OFBsnImageDescStatsReply>, OFRequest<OFBsnImageDescStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsRequest.Builder<OFBsnImageDescStatsReply> {
+        OFBsnImageDescStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnInterface.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnInterface.java
new file mode 100644
index 0000000..44f7739
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnInterface.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnInterface extends OFObject {
+    MacAddress getHwAddr();
+    String getName();
+    IPv4Address getIpv4Addr();
+    IPv4Address getIpv4Netmask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnInterface build();
+        MacAddress getHwAddr();
+        Builder setHwAddr(MacAddress hwAddr);
+        String getName();
+        Builder setName(String name);
+        IPv4Address getIpv4Addr();
+        Builder setIpv4Addr(IPv4Address ipv4Addr);
+        IPv4Address getIpv4Netmask();
+        Builder setIpv4Netmask(IPv4Address ipv4Netmask);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLacpConvergenceNotif.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLacpConvergenceNotif.java
new file mode 100644
index 0000000..d3b1d72
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLacpConvergenceNotif.java
@@ -0,0 +1,83 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnLacpConvergenceNotif extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    short getConvergenceStatus();
+    OFPort getPortNo();
+    int getActorSysPriority();
+    MacAddress getActorSysMac();
+    int getActorPortPriority();
+    int getActorPortNum();
+    int getActorKey();
+    int getPartnerSysPriority();
+    MacAddress getPartnerSysMac();
+    int getPartnerPortPriority();
+    int getPartnerPortNum();
+    int getPartnerKey();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnLacpConvergenceNotif build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        short getConvergenceStatus();
+        Builder setConvergenceStatus(short convergenceStatus);
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+        int getActorSysPriority();
+        Builder setActorSysPriority(int actorSysPriority);
+        MacAddress getActorSysMac();
+        Builder setActorSysMac(MacAddress actorSysMac);
+        int getActorPortPriority();
+        Builder setActorPortPriority(int actorPortPriority);
+        int getActorPortNum();
+        Builder setActorPortNum(int actorPortNum);
+        int getActorKey();
+        Builder setActorKey(int actorKey);
+        int getPartnerSysPriority();
+        Builder setPartnerSysPriority(int partnerSysPriority);
+        MacAddress getPartnerSysMac();
+        Builder setPartnerSysMac(MacAddress partnerSysMac);
+        int getPartnerPortPriority();
+        Builder setPartnerPortPriority(int partnerPortPriority);
+        int getPartnerPortNum();
+        Builder setPartnerPortNum(int partnerPortNum);
+        int getPartnerKey();
+        Builder setPartnerKey(int partnerKey);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLacpConvergenceStatusT.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLacpConvergenceStatusT.java
new file mode 100644
index 0000000..15505a2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLacpConvergenceStatusT.java
@@ -0,0 +1,31 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBsnLacpConvergenceStatusT {
+     SUCCESS,
+     TIMEDOUT,
+     OUT_OF_SYNC;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLacpStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLacpStatsEntry.java
new file mode 100644
index 0000000..ac3ac18
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLacpStatsEntry.java
@@ -0,0 +1,74 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnLacpStatsEntry extends OFObject {
+    OFPort getPortNo();
+    int getActorSysPriority();
+    MacAddress getActorSysMac();
+    int getActorPortPriority();
+    int getActorPortNum();
+    int getActorKey();
+    short getConvergenceStatus();
+    int getPartnerSysPriority();
+    MacAddress getPartnerSysMac();
+    int getPartnerPortPriority();
+    int getPartnerPortNum();
+    int getPartnerKey();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnLacpStatsEntry build();
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+        int getActorSysPriority();
+        Builder setActorSysPriority(int actorSysPriority);
+        MacAddress getActorSysMac();
+        Builder setActorSysMac(MacAddress actorSysMac);
+        int getActorPortPriority();
+        Builder setActorPortPriority(int actorPortPriority);
+        int getActorPortNum();
+        Builder setActorPortNum(int actorPortNum);
+        int getActorKey();
+        Builder setActorKey(int actorKey);
+        short getConvergenceStatus();
+        Builder setConvergenceStatus(short convergenceStatus);
+        int getPartnerSysPriority();
+        Builder setPartnerSysPriority(int partnerSysPriority);
+        MacAddress getPartnerSysMac();
+        Builder setPartnerSysMac(MacAddress partnerSysMac);
+        int getPartnerPortPriority();
+        Builder setPartnerPortPriority(int partnerPortPriority);
+        int getPartnerPortNum();
+        Builder setPartnerPortNum(int partnerPortNum);
+        int getPartnerKey();
+        Builder setPartnerKey(int partnerKey);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLacpStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLacpStatsReply.java
new file mode 100644
index 0000000..a1f354f
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLacpStatsReply.java
@@ -0,0 +1,57 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnLacpStatsReply extends OFObject, OFBsnStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    List<OFBsnLacpStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsReply.Builder {
+        OFBsnLacpStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        List<OFBsnLacpStatsEntry> getEntries();
+        Builder setEntries(List<OFBsnLacpStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLacpStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLacpStatsRequest.java
new file mode 100644
index 0000000..f8765f3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLacpStatsRequest.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnLacpStatsRequest extends OFObject, OFBsnStatsRequest<OFBsnLacpStatsReply>, OFRequest<OFBsnLacpStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsRequest.Builder<OFBsnLacpStatsReply> {
+        OFBsnLacpStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLog.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLog.java
new file mode 100644
index 0000000..15c0862
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLog.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnLog extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    OFBsnLoglevel getLoglevel();
+    String getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnLog build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        OFBsnLoglevel getLoglevel();
+        Builder setLoglevel(OFBsnLoglevel loglevel);
+        String getData();
+        Builder setData(String data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLoglevel.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLoglevel.java
new file mode 100644
index 0000000..fd9cadd
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnLoglevel.java
@@ -0,0 +1,34 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBsnLoglevel {
+     BSN_LOGLEVEL_MSG,
+     BSN_LOGLEVEL_ERROR,
+     BSN_LOGLEVEL_WARN,
+     BSN_LOGLEVEL_INFO,
+     BSN_LOGLEVEL_VERBOSE,
+     BSN_LOGLEVEL_TRACE;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduRxReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduRxReply.java
new file mode 100644
index 0000000..9601a76
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduRxReply.java
@@ -0,0 +1,56 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnPduRxReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getStatus();
+    OFPort getPortNo();
+    short getSlotNum();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnPduRxReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getStatus();
+        Builder setStatus(long status);
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+        short getSlotNum();
+        Builder setSlotNum(short slotNum);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduRxRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduRxRequest.java
new file mode 100644
index 0000000..1fa01cf
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduRxRequest.java
@@ -0,0 +1,59 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnPduRxRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnPduRxReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getTimeoutMs();
+    OFPort getPortNo();
+    short getSlotNum();
+    byte[] getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnPduRxRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getTimeoutMs();
+        Builder setTimeoutMs(long timeoutMs);
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+        short getSlotNum();
+        Builder setSlotNum(short slotNum);
+        byte[] getData();
+        Builder setData(byte[] data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduRxTimeout.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduRxTimeout.java
new file mode 100644
index 0000000..21f999d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduRxTimeout.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnPduRxTimeout extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    OFPort getPortNo();
+    short getSlotNum();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnPduRxTimeout build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+        short getSlotNum();
+        Builder setSlotNum(short slotNum);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduSlotNumT.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduSlotNumT.java
new file mode 100644
index 0000000..a843ca2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduSlotNumT.java
@@ -0,0 +1,29 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBsnPduSlotNumT {
+     PDU_SLOT_NUM_ANY;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduTxReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduTxReply.java
new file mode 100644
index 0000000..50ee693
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduTxReply.java
@@ -0,0 +1,56 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnPduTxReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getStatus();
+    OFPort getPortNo();
+    short getSlotNum();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnPduTxReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getStatus();
+        Builder setStatus(long status);
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+        short getSlotNum();
+        Builder setSlotNum(short slotNum);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduTxRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduTxRequest.java
new file mode 100644
index 0000000..22c4f72
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPduTxRequest.java
@@ -0,0 +1,59 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnPduTxRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnPduTxReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getTxIntervalMs();
+    OFPort getPortNo();
+    short getSlotNum();
+    byte[] getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnPduTxRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getTxIntervalMs();
+        Builder setTxIntervalMs(long txIntervalMs);
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+        short getSlotNum();
+        Builder setSlotNum(short slotNum);
+        byte[] getData();
+        Builder setData(byte[] data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPktinFlag.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPktinFlag.java
new file mode 100644
index 0000000..1c45232
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPktinFlag.java
@@ -0,0 +1,39 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBsnPktinFlag {
+     BSN_PKTIN_FLAG_PDU,
+     BSN_PKTIN_FLAG_NEW_HOST,
+     BSN_PKTIN_FLAG_STATION_MOVE,
+     BSN_PKTIN_FLAG_ARP,
+     BSN_PKTIN_FLAG_DHCP,
+     BSN_PKTIN_FLAG_L2_CPU,
+     BSN_PKTIN_FLAG_DEBUG,
+     BSN_PKTIN_FLAG_TTL_EXPIRED,
+     BSN_PKTIN_FLAG_L3_MISS,
+     BSN_PKTIN_FLAG_L3_CPU,
+     BSN_PKTIN_FLAG_INGRESS_ACL;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPortCounter.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPortCounter.java
new file mode 100644
index 0000000..b73290a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPortCounter.java
@@ -0,0 +1,55 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBsnPortCounter {
+     BSN_PORT_COUNTER_RX_BYTES,
+     BSN_PORT_COUNTER_RX_PACKETS_UNICAST,
+     BSN_PORT_COUNTER_RX_PACKETS_BROADCAST,
+     BSN_PORT_COUNTER_RX_PACKETS_MULTICAST,
+     BSN_PORT_COUNTER_RX_DROPPED,
+     BSN_PORT_COUNTER_RX_ERRORS,
+     BSN_PORT_COUNTER_TX_BYTES,
+     BSN_PORT_COUNTER_TX_PACKETS_UNICAST,
+     BSN_PORT_COUNTER_TX_PACKETS_BROADCAST,
+     BSN_PORT_COUNTER_TX_PACKETS_MULTICAST,
+     BSN_PORT_COUNTER_TX_DROPPED,
+     BSN_PORT_COUNTER_TX_ERRORS,
+     BSN_PORT_COUNTER_RX_RUNTS,
+     BSN_PORT_COUNTER_RX_GIANTS,
+     BSN_PORT_COUNTER_RX_CRC_ERRORS,
+     BSN_PORT_COUNTER_RX_ALIGNMENT_ERRORS,
+     BSN_PORT_COUNTER_RX_SYMBOL_ERRORS,
+     BSN_PORT_COUNTER_RX_PAUSE_INPUT,
+     BSN_PORT_COUNTER_TX_COLLISIONS,
+     BSN_PORT_COUNTER_TX_LATE_COLLISIONS,
+     BSN_PORT_COUNTER_TX_DEFERRED,
+     BSN_PORT_COUNTER_TX_PAUSE_OUTPUT,
+     BSN_PORT_COUNTER_RX_PACKETS,
+     BSN_PORT_COUNTER_TX_PACKETS,
+     BSN_PORT_COUNTER_RX_LENGTH_ERRORS,
+     BSN_PORT_COUNTER_RX_OVERFLOW_ERRORS,
+     BSN_PORT_COUNTER_TX_CARRIER_ERRORS;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPortCounterStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPortCounterStatsEntry.java
new file mode 100644
index 0000000..19caab7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPortCounterStatsEntry.java
@@ -0,0 +1,45 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnPortCounterStatsEntry extends OFObject {
+    OFPort getPortNo();
+    List<U64> getValues();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnPortCounterStatsEntry build();
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+        List<U64> getValues();
+        Builder setValues(List<U64> values);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPortCounterStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPortCounterStatsReply.java
new file mode 100644
index 0000000..4f618d5
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPortCounterStatsReply.java
@@ -0,0 +1,57 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnPortCounterStatsReply extends OFObject, OFBsnStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    List<OFBsnPortCounterStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsReply.Builder {
+        OFBsnPortCounterStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        List<OFBsnPortCounterStatsEntry> getEntries();
+        Builder setEntries(List<OFBsnPortCounterStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPortCounterStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPortCounterStatsRequest.java
new file mode 100644
index 0000000..21ade35
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnPortCounterStatsRequest.java
@@ -0,0 +1,56 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnPortCounterStatsRequest extends OFObject, OFBsnStatsRequest<OFBsnPortCounterStatsReply>, OFRequest<OFBsnPortCounterStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    OFPort getPortNo();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsRequest.Builder<OFBsnPortCounterStatsReply> {
+        OFBsnPortCounterStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnRoleStatus.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnRoleStatus.java
new file mode 100644
index 0000000..d28172c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnRoleStatus.java
@@ -0,0 +1,56 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnRoleStatus extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    OFControllerRole getRole();
+    OFBsnControllerRoleReason getReason();
+    U64 getGenerationId();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnRoleStatus build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        OFControllerRole getRole();
+        Builder setRole(OFControllerRole role);
+        OFBsnControllerRoleReason getReason();
+        Builder setReason(OFBsnControllerRoleReason reason);
+        U64 getGenerationId();
+        Builder setGenerationId(U64 generationId);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetAuxCxnsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetAuxCxnsReply.java
new file mode 100644
index 0000000..6d0e2dd
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetAuxCxnsReply.java
@@ -0,0 +1,54 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnSetAuxCxnsReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getNumAux();
+    long getStatus();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnSetAuxCxnsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getNumAux();
+        Builder setNumAux(long numAux);
+        long getStatus();
+        Builder setStatus(long status);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetAuxCxnsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetAuxCxnsRequest.java
new file mode 100644
index 0000000..9c7561f
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetAuxCxnsRequest.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnSetAuxCxnsRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnSetAuxCxnsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getNumAux();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnSetAuxCxnsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getNumAux();
+        Builder setNumAux(long numAux);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetIpMask.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetIpMask.java
new file mode 100644
index 0000000..c435362
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetIpMask.java
@@ -0,0 +1,54 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnSetIpMask extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    short getIndex();
+    long getMask();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnSetIpMask build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        short getIndex();
+        Builder setIndex(short index);
+        long getMask();
+        Builder setMask(long mask);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetL2TableReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetL2TableReply.java
new file mode 100644
index 0000000..3847e3a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetL2TableReply.java
@@ -0,0 +1,57 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnSetL2TableReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    boolean isL2TableEnable();
+    int getL2TablePriority();
+    long getStatus();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnSetL2TableReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        boolean isL2TableEnable();
+        Builder setL2TableEnable(boolean l2TableEnable);
+        int getL2TablePriority();
+        Builder setL2TablePriority(int l2TablePriority);
+        long getStatus();
+        Builder setStatus(long status);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetL2TableRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetL2TableRequest.java
new file mode 100644
index 0000000..efff0cc
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetL2TableRequest.java
@@ -0,0 +1,54 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnSetL2TableRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnSetL2TableReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    boolean isL2TableEnable();
+    int getL2TablePriority();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnSetL2TableRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        boolean isL2TableEnable();
+        Builder setL2TableEnable(boolean l2TableEnable);
+        int getL2TablePriority();
+        Builder setL2TablePriority(int l2TablePriority);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetLacpReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetLacpReply.java
new file mode 100644
index 0000000..4451548
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetLacpReply.java
@@ -0,0 +1,54 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnSetLacpReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getStatus();
+    OFPort getPortNo();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnSetLacpReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getStatus();
+        Builder setStatus(long status);
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetLacpRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetLacpRequest.java
new file mode 100644
index 0000000..a9c133d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetLacpRequest.java
@@ -0,0 +1,69 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnSetLacpRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnSetLacpReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    short getEnabled();
+    OFPort getPortNo();
+    int getActorSysPriority();
+    MacAddress getActorSysMac();
+    int getActorPortPriority();
+    int getActorPortNum();
+    int getActorKey();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnSetLacpRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        short getEnabled();
+        Builder setEnabled(short enabled);
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+        int getActorSysPriority();
+        Builder setActorSysPriority(int actorSysPriority);
+        MacAddress getActorSysMac();
+        Builder setActorSysMac(MacAddress actorSysMac);
+        int getActorPortPriority();
+        Builder setActorPortPriority(int actorPortPriority);
+        int getActorPortNum();
+        Builder setActorPortNum(int actorPortNum);
+        int getActorKey();
+        Builder setActorKey(int actorKey);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetMirroring.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetMirroring.java
new file mode 100644
index 0000000..2a0e36c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetMirroring.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnSetMirroring extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    short getReportMirrorPorts();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnSetMirroring build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        short getReportMirrorPorts();
+        Builder setReportMirrorPorts(short reportMirrorPorts);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetPktinSuppressionReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetPktinSuppressionReply.java
new file mode 100644
index 0000000..33b4834
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetPktinSuppressionReply.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnSetPktinSuppressionReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getStatus();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnSetPktinSuppressionReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getStatus();
+        Builder setStatus(long status);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetPktinSuppressionRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetPktinSuppressionRequest.java
new file mode 100644
index 0000000..07a3f88
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetPktinSuppressionRequest.java
@@ -0,0 +1,63 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnSetPktinSuppressionRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnSetPktinSuppressionReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    boolean isEnabled();
+    int getIdleTimeout();
+    int getHardTimeout();
+    int getPriority();
+    U64 getCookie();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnSetPktinSuppressionRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        boolean isEnabled();
+        Builder setEnabled(boolean enabled);
+        int getIdleTimeout();
+        Builder setIdleTimeout(int idleTimeout);
+        int getHardTimeout();
+        Builder setHardTimeout(int hardTimeout);
+        int getPriority();
+        Builder setPriority(int priority);
+        U64 getCookie();
+        Builder setCookie(U64 cookie);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetSwitchPipelineReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetSwitchPipelineReply.java
new file mode 100644
index 0000000..23f377a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetSwitchPipelineReply.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnSetSwitchPipelineReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getStatus();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnSetSwitchPipelineReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getStatus();
+        Builder setStatus(long status);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetSwitchPipelineRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetSwitchPipelineRequest.java
new file mode 100644
index 0000000..5c6bb48
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSetSwitchPipelineRequest.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnSetSwitchPipelineRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnSetSwitchPipelineReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    String getPipeline();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnSetSwitchPipelineRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        String getPipeline();
+        Builder setPipeline(String pipeline);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnShellCommand.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnShellCommand.java
new file mode 100644
index 0000000..a88be4b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnShellCommand.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnShellCommand extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getService();
+    byte[] getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnShellCommand build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getService();
+        Builder setService(long service);
+        byte[] getData();
+        Builder setData(byte[] data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnShellOutput.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnShellOutput.java
new file mode 100644
index 0000000..65f183a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnShellOutput.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnShellOutput extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    byte[] getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnShellOutput build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        byte[] getData();
+        Builder setData(byte[] data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnShellStatus.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnShellStatus.java
new file mode 100644
index 0000000..07ea119
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnShellStatus.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnShellStatus extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getStatus();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnShellStatus build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getStatus();
+        Builder setStatus(long status);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnStatsReply.java
new file mode 100644
index 0000000..ee045bc
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnStatsReply.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnStatsReply extends OFObject, OFExperimenterStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFExperimenterStatsReply.Builder {
+        OFBsnStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnStatsRequest.java
new file mode 100644
index 0000000..f65bbb4
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnStatsRequest.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnStatsRequest<T extends OFBsnStatsReply> extends OFObject, OFExperimenterStatsRequest<T> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder<T> createBuilder();
+    public interface Builder<T extends OFBsnStatsReply> extends OFExperimenterStatsRequest.Builder<T> {
+        OFBsnStatsRequest<T> build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder<T> setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder<T> setFlags(Set<OFStatsRequestFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSwitchPipelineStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSwitchPipelineStatsEntry.java
new file mode 100644
index 0000000..7d11ed0
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSwitchPipelineStatsEntry.java
@@ -0,0 +1,41 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnSwitchPipelineStatsEntry extends OFObject {
+    String getPipeline();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnSwitchPipelineStatsEntry build();
+        String getPipeline();
+        Builder setPipeline(String pipeline);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSwitchPipelineStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSwitchPipelineStatsReply.java
new file mode 100644
index 0000000..40cee33
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSwitchPipelineStatsReply.java
@@ -0,0 +1,57 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnSwitchPipelineStatsReply extends OFObject, OFBsnStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    List<OFBsnSwitchPipelineStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsReply.Builder {
+        OFBsnSwitchPipelineStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        List<OFBsnSwitchPipelineStatsEntry> getEntries();
+        Builder setEntries(List<OFBsnSwitchPipelineStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSwitchPipelineStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSwitchPipelineStatsRequest.java
new file mode 100644
index 0000000..e395412
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnSwitchPipelineStatsRequest.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnSwitchPipelineStatsRequest extends OFObject, OFBsnStatsRequest<OFBsnSwitchPipelineStatsReply>, OFRequest<OFBsnSwitchPipelineStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsRequest.Builder<OFBsnSwitchPipelineStatsReply> {
+        OFBsnSwitchPipelineStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTableChecksumStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTableChecksumStatsEntry.java
new file mode 100644
index 0000000..399a16a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTableChecksumStatsEntry.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTableChecksumStatsEntry extends OFObject {
+    TableId getTableId();
+    U64 getChecksum();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnTableChecksumStatsEntry build();
+        TableId getTableId();
+        Builder setTableId(TableId tableId);
+        U64 getChecksum();
+        Builder setChecksum(U64 checksum);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTableChecksumStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTableChecksumStatsReply.java
new file mode 100644
index 0000000..dadef01c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTableChecksumStatsReply.java
@@ -0,0 +1,57 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTableChecksumStatsReply extends OFObject, OFBsnStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    List<OFBsnTableChecksumStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsReply.Builder {
+        OFBsnTableChecksumStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        List<OFBsnTableChecksumStatsEntry> getEntries();
+        Builder setEntries(List<OFBsnTableChecksumStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTableChecksumStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTableChecksumStatsRequest.java
new file mode 100644
index 0000000..121f74b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTableChecksumStatsRequest.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTableChecksumStatsRequest extends OFObject, OFBsnStatsRequest<OFBsnTableChecksumStatsReply>, OFRequest<OFBsnTableChecksumStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsRequest.Builder<OFBsnTableChecksumStatsReply> {
+        OFBsnTableChecksumStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTableSetBucketsSize.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTableSetBucketsSize.java
new file mode 100644
index 0000000..f86f447
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTableSetBucketsSize.java
@@ -0,0 +1,54 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTableSetBucketsSize extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    TableId getTableId();
+    long getBucketsSize();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnTableSetBucketsSize build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        TableId getTableId();
+        Builder setTableId(TableId tableId);
+        long getBucketsSize();
+        Builder setBucketsSize(long bucketsSize);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTcpFlag.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTcpFlag.java
new file mode 100644
index 0000000..0883a10
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTcpFlag.java
@@ -0,0 +1,37 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBsnTcpFlag {
+     BSN_TCP_FLAG_FIN,
+     BSN_TCP_FLAG_SYN,
+     BSN_TCP_FLAG_RST,
+     BSN_TCP_FLAG_PSH,
+     BSN_TCP_FLAG_ACK,
+     BSN_TCP_FLAG_URG,
+     BSN_TCP_FLAG_ECE,
+     BSN_TCP_FLAG_CWR,
+     BSN_TCP_FLAG_NS;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTimeReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTimeReply.java
new file mode 100644
index 0000000..2b73179
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTimeReply.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTimeReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    U64 getTimeMs();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnTimeReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        U64 getTimeMs();
+        Builder setTimeMs(U64 timeMs);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTimeRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTimeRequest.java
new file mode 100644
index 0000000..438f2d5
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnTimeRequest.java
@@ -0,0 +1,47 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTimeRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnTimeReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnTimeRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnUdfAnchor.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnUdfAnchor.java
new file mode 100644
index 0000000..afdd4c8
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnUdfAnchor.java
@@ -0,0 +1,31 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBsnUdfAnchor {
+     BSN_UDF_ANCHOR_PACKET_START,
+     BSN_UDF_ANCHOR_L3_HEADER_START,
+     BSN_UDF_ANCHOR_L4_HEADER_START;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVirtualPortCreateReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVirtualPortCreateReply.java
new file mode 100644
index 0000000..5e17e22
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVirtualPortCreateReply.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnVirtualPortCreateReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getStatus();
+    long getVportNo();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnVirtualPortCreateReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getStatus();
+        Builder setStatus(long status);
+        long getVportNo();
+        Builder setVportNo(long vportNo);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVirtualPortCreateRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVirtualPortCreateRequest.java
new file mode 100644
index 0000000..e916e0f
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVirtualPortCreateRequest.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnVirtualPortCreateRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnVirtualPortCreateReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    OFBsnVport getVport();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnVirtualPortCreateRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        OFBsnVport getVport();
+        Builder setVport(OFBsnVport vport);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVirtualPortRemoveReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVirtualPortRemoveReply.java
new file mode 100644
index 0000000..d83182e
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVirtualPortRemoveReply.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnVirtualPortRemoveReply extends OFObject, OFBsnHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getStatus();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnVirtualPortRemoveReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getStatus();
+        Builder setStatus(long status);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVirtualPortRemoveRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVirtualPortRemoveRequest.java
new file mode 100644
index 0000000..ae43dea
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVirtualPortRemoveRequest.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnVirtualPortRemoveRequest extends OFObject, OFBsnHeader, OFRequest<OFBsnVirtualPortRemoveReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    long getVportNo();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnHeader.Builder {
+        OFBsnVirtualPortRemoveRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        long getVportNo();
+        Builder setVportNo(long vportNo);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVlanCounterConstants.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVlanCounterConstants.java
new file mode 100644
index 0000000..0c85363
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVlanCounterConstants.java
@@ -0,0 +1,29 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBsnVlanCounterConstants {
+     BSN_VLAN_ALL;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVlanCounterStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVlanCounterStatsEntry.java
new file mode 100644
index 0000000..d8e2dde
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVlanCounterStatsEntry.java
@@ -0,0 +1,45 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnVlanCounterStatsEntry extends OFObject {
+    int getVlanVid();
+    List<U64> getValues();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnVlanCounterStatsEntry build();
+        int getVlanVid();
+        Builder setVlanVid(int vlanVid);
+        List<U64> getValues();
+        Builder setValues(List<U64> values);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVlanCounterStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVlanCounterStatsReply.java
new file mode 100644
index 0000000..0789370
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVlanCounterStatsReply.java
@@ -0,0 +1,57 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnVlanCounterStatsReply extends OFObject, OFBsnStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    List<OFBsnVlanCounterStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsReply.Builder {
+        OFBsnVlanCounterStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        List<OFBsnVlanCounterStatsEntry> getEntries();
+        Builder setEntries(List<OFBsnVlanCounterStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVlanCounterStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVlanCounterStatsRequest.java
new file mode 100644
index 0000000..b29f0d9
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVlanCounterStatsRequest.java
@@ -0,0 +1,56 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnVlanCounterStatsRequest extends OFObject, OFBsnStatsRequest<OFBsnVlanCounterStatsReply>, OFRequest<OFBsnVlanCounterStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    int getVlanVid();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsRequest.Builder<OFBsnVlanCounterStatsReply> {
+        OFBsnVlanCounterStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        int getVlanVid();
+        Builder setVlanVid(int vlanVid);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVlanCounterT.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVlanCounterT.java
new file mode 100644
index 0000000..911f702
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVlanCounterT.java
@@ -0,0 +1,32 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBsnVlanCounterT {
+     BSN_VLAN_COUNTER_RX_BYTES,
+     BSN_VLAN_COUNTER_RX_PACKETS,
+     BSN_VLAN_COUNTER_TX_BYTES,
+     BSN_VLAN_COUNTER_TX_PACKETS;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVport.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVport.java
new file mode 100644
index 0000000..20f71bf
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVport.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnVport extends OFObject {
+    int getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnVport build();
+        int getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVportL2Gre.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVportL2Gre.java
new file mode 100644
index 0000000..58144b1
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVportL2Gre.java
@@ -0,0 +1,77 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnVportL2Gre extends OFObject, OFBsnVport {
+    int getType();
+    Set<OFBsnVportL2GreFlags> getFlags();
+    OFPort getPortNo();
+    OFPort getLoopbackPortNo();
+    MacAddress getLocalMac();
+    MacAddress getNhMac();
+    IPv4Address getSrcIp();
+    IPv4Address getDstIp();
+    short getDscp();
+    short getTtl();
+    long getVpn();
+    long getRateLimit();
+    String getIfName();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnVport.Builder {
+        OFBsnVportL2Gre build();
+        int getType();
+        Set<OFBsnVportL2GreFlags> getFlags();
+        Builder setFlags(Set<OFBsnVportL2GreFlags> flags);
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+        OFPort getLoopbackPortNo();
+        Builder setLoopbackPortNo(OFPort loopbackPortNo);
+        MacAddress getLocalMac();
+        Builder setLocalMac(MacAddress localMac);
+        MacAddress getNhMac();
+        Builder setNhMac(MacAddress nhMac);
+        IPv4Address getSrcIp();
+        Builder setSrcIp(IPv4Address srcIp);
+        IPv4Address getDstIp();
+        Builder setDstIp(IPv4Address dstIp);
+        short getDscp();
+        Builder setDscp(short dscp);
+        short getTtl();
+        Builder setTtl(short ttl);
+        long getVpn();
+        Builder setVpn(long vpn);
+        long getRateLimit();
+        Builder setRateLimit(long rateLimit);
+        String getIfName();
+        Builder setIfName(String ifName);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVportL2GreFlags.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVportL2GreFlags.java
new file mode 100644
index 0000000..8a8728b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVportL2GreFlags.java
@@ -0,0 +1,33 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBsnVportL2GreFlags {
+     BSN_VPORT_L2GRE_LOCAL_MAC_IS_VALID,
+     BSN_VPORT_L2GRE_DSCP_ASSIGN,
+     BSN_VPORT_L2GRE_DSCP_COPY,
+     BSN_VPORT_L2GRE_LOOPBACK_IS_VALID,
+     BSN_VPORT_L2GRE_RATE_LIMIT_IS_VALID;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVportQInQ.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVportQInQ.java
new file mode 100644
index 0000000..3b05be9
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVportQInQ.java
@@ -0,0 +1,58 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnVportQInQ extends OFObject, OFBsnVport {
+    int getType();
+    long getPortNo();
+    int getIngressTpid();
+    int getIngressVlanId();
+    int getEgressTpid();
+    int getEgressVlanId();
+    String getIfName();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnVport.Builder {
+        OFBsnVportQInQ build();
+        int getType();
+        long getPortNo();
+        Builder setPortNo(long portNo);
+        int getIngressTpid();
+        Builder setIngressTpid(int ingressTpid);
+        int getIngressVlanId();
+        Builder setIngressVlanId(int ingressVlanId);
+        int getEgressTpid();
+        Builder setEgressTpid(int egressTpid);
+        int getEgressVlanId();
+        Builder setEgressVlanId(int egressVlanId);
+        String getIfName();
+        Builder setIfName(String ifName);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVportQInQUntagged.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVportQInQUntagged.java
new file mode 100644
index 0000000..7e2a4be
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVportQInQUntagged.java
@@ -0,0 +1,29 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBsnVportQInQUntagged {
+     BSN_VPORT_Q_IN_Q_UNTAGGED;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVportStatus.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVportStatus.java
new file mode 100644
index 0000000..f5e3132
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVportStatus.java
@@ -0,0 +1,30 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBsnVportStatus {
+     BSN_VPORT_STATUS_OK,
+     BSN_VPORT_STATUS_FAILED;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVrfCounterConstants.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVrfCounterConstants.java
new file mode 100644
index 0000000..21088de
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVrfCounterConstants.java
@@ -0,0 +1,29 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBsnVrfCounterConstants {
+     BSN_VRF_ALL;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVrfCounterStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVrfCounterStatsEntry.java
new file mode 100644
index 0000000..18d6245
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVrfCounterStatsEntry.java
@@ -0,0 +1,45 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnVrfCounterStatsEntry extends OFObject {
+    long getVrf();
+    List<U64> getValues();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnVrfCounterStatsEntry build();
+        long getVrf();
+        Builder setVrf(long vrf);
+        List<U64> getValues();
+        Builder setValues(List<U64> values);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVrfCounterStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVrfCounterStatsReply.java
new file mode 100644
index 0000000..2a564d0
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVrfCounterStatsReply.java
@@ -0,0 +1,57 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnVrfCounterStatsReply extends OFObject, OFBsnStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    List<OFBsnVrfCounterStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsReply.Builder {
+        OFBsnVrfCounterStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        List<OFBsnVrfCounterStatsEntry> getEntries();
+        Builder setEntries(List<OFBsnVrfCounterStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVrfCounterStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVrfCounterStatsRequest.java
new file mode 100644
index 0000000..36bd75b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVrfCounterStatsRequest.java
@@ -0,0 +1,56 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnVrfCounterStatsRequest extends OFObject, OFBsnStatsRequest<OFBsnVrfCounterStatsReply>, OFRequest<OFBsnVrfCounterStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getExperimenter();
+    long getSubtype();
+    long getVrf();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnStatsRequest.Builder<OFBsnVrfCounterStatsReply> {
+        OFBsnVrfCounterStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        long getExperimenter();
+        long getSubtype();
+        long getVrf();
+        Builder setVrf(long vrf);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVrfCounterT.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVrfCounterT.java
new file mode 100644
index 0000000..38e537d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBsnVrfCounterT.java
@@ -0,0 +1,30 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFBsnVrfCounterT {
+     BSN_VRF_COUNTER_BYTES,
+     BSN_VRF_COUNTER_PACKETS;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBucket.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBucket.java
new file mode 100644
index 0000000..02af70a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBucket.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBucket extends OFObject {
+    int getWeight();
+    OFPort getWatchPort();
+    OFGroup getWatchGroup();
+    List<OFAction> getActions();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBucket build();
+        int getWeight();
+        Builder setWeight(int weight);
+        OFPort getWatchPort();
+        Builder setWatchPort(OFPort watchPort);
+        OFGroup getWatchGroup();
+        Builder setWatchGroup(OFGroup watchGroup);
+        List<OFAction> getActions();
+        Builder setActions(List<OFAction> actions);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBucketCounter.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBucketCounter.java
new file mode 100644
index 0000000..7ee630a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFBucketCounter.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBucketCounter extends OFObject {
+    U64 getPacketCount();
+    U64 getByteCount();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBucketCounter build();
+        U64 getPacketCount();
+        Builder setPacketCount(U64 packetCount);
+        U64 getByteCount();
+        Builder setByteCount(U64 byteCount);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFCapabilities.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFCapabilities.java
new file mode 100644
index 0000000..5444962
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFCapabilities.java
@@ -0,0 +1,38 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFCapabilities {
+     FLOW_STATS,
+     TABLE_STATS,
+     PORT_STATS,
+     STP,
+     RESERVED,
+     IP_REASM,
+     QUEUE_STATS,
+     ARP_MATCH_IP,
+     GROUP_STATS,
+     PORT_BLOCKED;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFConfigFlags.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFConfigFlags.java
new file mode 100644
index 0000000..8ea061b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFConfigFlags.java
@@ -0,0 +1,33 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFConfigFlags {
+     FRAG_NORMAL,
+     FRAG_DROP,
+     FRAG_REASM,
+     FRAG_MASK,
+     INVALID_TTL_TO_CONTROLLER;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFControllerMaxLen.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFControllerMaxLen.java
new file mode 100644
index 0000000..c2759d9
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFControllerMaxLen.java
@@ -0,0 +1,30 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFControllerMaxLen {
+     MAX,
+     NO_BUFFER;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFControllerRole.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFControllerRole.java
new file mode 100644
index 0000000..4880189
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFControllerRole.java
@@ -0,0 +1,32 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFControllerRole {
+     ROLE_NOCHANGE,
+     ROLE_EQUAL,
+     ROLE_MASTER,
+     ROLE_SLAVE;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFDescStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFDescStatsReply.java
new file mode 100644
index 0000000..cdcd1bf
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFDescStatsReply.java
@@ -0,0 +1,64 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFDescStatsReply extends OFObject, OFStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    String getMfrDesc();
+    String getHwDesc();
+    String getSwDesc();
+    String getSerialNum();
+    String getDpDesc();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsReply.Builder {
+        OFDescStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        String getMfrDesc();
+        Builder setMfrDesc(String mfrDesc);
+        String getHwDesc();
+        Builder setHwDesc(String hwDesc);
+        String getSwDesc();
+        Builder setSwDesc(String swDesc);
+        String getSerialNum();
+        Builder setSerialNum(String serialNum);
+        String getDpDesc();
+        Builder setDpDesc(String dpDesc);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFDescStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFDescStatsRequest.java
new file mode 100644
index 0000000..e0efe40
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFDescStatsRequest.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFDescStatsRequest extends OFObject, OFStatsRequest<OFDescStatsReply>, OFRequest<OFDescStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsRequest.Builder<OFDescStatsReply> {
+        OFDescStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFEchoReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFEchoReply.java
new file mode 100644
index 0000000..ba8b181
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFEchoReply.java
@@ -0,0 +1,46 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFEchoReply extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    byte[] getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFEchoReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        byte[] getData();
+        Builder setData(byte[] data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFEchoRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFEchoRequest.java
new file mode 100644
index 0000000..6276280
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFEchoRequest.java
@@ -0,0 +1,46 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFEchoRequest extends OFObject, OFMessage, OFRequest<OFEchoReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    byte[] getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFEchoRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        byte[] getData();
+        Builder setData(byte[] data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFErrorMsg.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFErrorMsg.java
new file mode 100644
index 0000000..dea4e97
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFErrorMsg.java
@@ -0,0 +1,45 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFErrorMsg extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFErrorType getErrType();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFErrorMsg build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFErrorType getErrType();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFErrorType.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFErrorType.java
new file mode 100644
index 0000000..53fd319
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFErrorType.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFErrorType {
+     HELLO_FAILED,
+     BAD_REQUEST,
+     BAD_ACTION,
+     FLOW_MOD_FAILED,
+     PORT_MOD_FAILED,
+     QUEUE_OP_FAILED,
+     BAD_INSTRUCTION,
+     BAD_MATCH,
+     GROUP_MOD_FAILED,
+     TABLE_MOD_FAILED,
+     SWITCH_CONFIG_FAILED,
+     ROLE_REQUEST_FAILED,
+     EXPERIMENTER,
+     METER_MOD_FAILED,
+     TABLE_FEATURES_FAILED;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFExperimenter.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFExperimenter.java
new file mode 100644
index 0000000..f953879
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFExperimenter.java
@@ -0,0 +1,45 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFExperimenter extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFExperimenter build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFExperimenterStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFExperimenterStatsReply.java
new file mode 100644
index 0000000..a308ab2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFExperimenterStatsReply.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFExperimenterStatsReply extends OFObject, OFStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getExperimenter();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsReply.Builder {
+        OFExperimenterStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getExperimenter();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFExperimenterStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFExperimenterStatsRequest.java
new file mode 100644
index 0000000..bb92557
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFExperimenterStatsRequest.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFExperimenterStatsRequest<T extends OFExperimenterStatsReply> extends OFObject, OFStatsRequest<T> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getExperimenter();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder<T> createBuilder();
+    public interface Builder<T extends OFExperimenterStatsReply> extends OFStatsRequest.Builder<T> {
+        OFExperimenterStatsRequest<T> build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder<T> setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder<T> setFlags(Set<OFStatsRequestFlags> flags);
+        long getExperimenter();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFactories.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFactories.java
new file mode 100644
index 0000000..afc2f1f
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFactories.java
@@ -0,0 +1,74 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_factories.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public final class OFFactories {
+
+    private static final GenericReader GENERIC_READER = new GenericReader();
+
+    public static OFFactory getFactory(OFVersion version) {
+        switch(version) {
+            case OF_10:
+                return org.projectfloodlight.openflow.protocol.ver10.OFFactoryVer10.INSTANCE;
+            case OF_11:
+                return org.projectfloodlight.openflow.protocol.ver11.OFFactoryVer11.INSTANCE;
+            case OF_12:
+                return org.projectfloodlight.openflow.protocol.ver12.OFFactoryVer12.INSTANCE;
+            case OF_13:
+                return org.projectfloodlight.openflow.protocol.ver13.OFFactoryVer13.INSTANCE;
+            default:
+                throw new IllegalArgumentException("Unknown version: "+version);
+            }
+    }
+
+    private static class GenericReader implements OFMessageReader<OFMessage> {
+        public OFMessage readFrom(ChannelBuffer bb) throws OFParseError {
+            short wireVersion = U8.f(bb.getByte(0));
+            OFFactory factory;
+            switch (wireVersion) {
+            case 1:
+                factory = org.projectfloodlight.openflow.protocol.ver10.OFFactoryVer10.INSTANCE;
+                break;
+            case 2:
+                factory = org.projectfloodlight.openflow.protocol.ver11.OFFactoryVer11.INSTANCE;
+                break;
+            case 3:
+                factory = org.projectfloodlight.openflow.protocol.ver12.OFFactoryVer12.INSTANCE;
+                break;
+            case 4:
+                factory = org.projectfloodlight.openflow.protocol.ver13.OFFactoryVer13.INSTANCE;
+                break;
+            default:
+                throw new IllegalArgumentException("Unknown wire version: " + wireVersion);
+            }
+            return factory.getReader().readFrom(bb);
+        }
+    }
+
+    public static OFMessageReader<OFMessage> getGenericReader() {
+        return GENERIC_READER;
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFactory.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFactory.java
new file mode 100644
index 0000000..7f1ae47
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFactory.java
@@ -0,0 +1,336 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_factory_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+
+public interface OFFactory extends XidGenerator {
+    // Subfactories
+    OFActions actions();
+    OFInstructions instructions();
+    OFMeterBands meterBands();
+    OFOxms oxms();
+    OFQueueProps queueProps();
+    OFErrorMsgs errorMsgs();
+    OFActionIds actionIds();
+    OFInstructionIds instructionIds();
+    OFBsnTlvs bsnTlvs();
+
+    OFAggregateStatsReply.Builder buildAggregateStatsReply();
+    OFAggregateStatsRequest.Builder buildAggregateStatsRequest();
+    OFBarrierReply.Builder buildBarrierReply();
+    OFBarrierReply barrierReply();
+    OFBarrierRequest.Builder buildBarrierRequest();
+    OFBarrierRequest barrierRequest();
+    OFBsnBwClearDataReply.Builder buildBsnBwClearDataReply();
+    OFBsnBwClearDataReply bsnBwClearDataReply(long status);
+    OFBsnBwClearDataRequest.Builder buildBsnBwClearDataRequest();
+    OFBsnBwClearDataRequest bsnBwClearDataRequest();
+    OFBsnBwEnableGetReply.Builder buildBsnBwEnableGetReply();
+    OFBsnBwEnableGetReply bsnBwEnableGetReply(long enabled);
+    OFBsnBwEnableGetRequest.Builder buildBsnBwEnableGetRequest();
+    OFBsnBwEnableGetRequest bsnBwEnableGetRequest();
+    OFBsnBwEnableSetReply.Builder buildBsnBwEnableSetReply();
+    OFBsnBwEnableSetRequest.Builder buildBsnBwEnableSetRequest();
+    OFBsnBwEnableSetRequest bsnBwEnableSetRequest(long enable);
+    OFBsnGetInterfacesReply.Builder buildBsnGetInterfacesReply();
+    OFBsnGetInterfacesReply bsnGetInterfacesReply(List<OFBsnInterface> interfaces);
+    OFBsnGetInterfacesRequest.Builder buildBsnGetInterfacesRequest();
+    OFBsnGetInterfacesRequest bsnGetInterfacesRequest();
+    OFBsnGetIpMaskReply.Builder buildBsnGetIpMaskReply() throws UnsupportedOperationException;
+    OFBsnGetIpMaskRequest.Builder buildBsnGetIpMaskRequest() throws UnsupportedOperationException;
+    OFBsnGetIpMaskRequest bsnGetIpMaskRequest(short index);
+    OFBsnGetL2TableReply.Builder buildBsnGetL2TableReply() throws UnsupportedOperationException;
+    OFBsnGetL2TableRequest.Builder buildBsnGetL2TableRequest() throws UnsupportedOperationException;
+    OFBsnGetL2TableRequest bsnGetL2TableRequest();
+    OFBsnGetMirroringReply.Builder buildBsnGetMirroringReply();
+    OFBsnGetMirroringReply bsnGetMirroringReply(short reportMirrorPorts);
+    OFBsnGetMirroringRequest.Builder buildBsnGetMirroringRequest();
+    OFBsnGetMirroringRequest bsnGetMirroringRequest(short reportMirrorPorts);
+    OFBsnHybridGetReply.Builder buildBsnHybridGetReply() throws UnsupportedOperationException;
+    OFBsnHybridGetRequest.Builder buildBsnHybridGetRequest() throws UnsupportedOperationException;
+    OFBsnHybridGetRequest bsnHybridGetRequest();
+    OFBsnInterface.Builder buildBsnInterface();
+    OFBsnPduRxReply.Builder buildBsnPduRxReply();
+    OFBsnPduRxRequest.Builder buildBsnPduRxRequest();
+    OFBsnPduRxTimeout.Builder buildBsnPduRxTimeout();
+    OFBsnPduTxReply.Builder buildBsnPduTxReply();
+    OFBsnPduTxRequest.Builder buildBsnPduTxRequest();
+    OFBsnSetIpMask.Builder buildBsnSetIpMask() throws UnsupportedOperationException;
+    OFBsnSetL2TableReply.Builder buildBsnSetL2TableReply() throws UnsupportedOperationException;
+    OFBsnSetL2TableRequest.Builder buildBsnSetL2TableRequest() throws UnsupportedOperationException;
+    OFBsnSetMirroring.Builder buildBsnSetMirroring();
+    OFBsnSetMirroring bsnSetMirroring(short reportMirrorPorts);
+    OFBsnSetPktinSuppressionReply.Builder buildBsnSetPktinSuppressionReply();
+    OFBsnSetPktinSuppressionReply bsnSetPktinSuppressionReply(long status);
+    OFBsnSetPktinSuppressionRequest.Builder buildBsnSetPktinSuppressionRequest();
+    OFBsnShellCommand.Builder buildBsnShellCommand() throws UnsupportedOperationException;
+    OFBsnShellOutput.Builder buildBsnShellOutput() throws UnsupportedOperationException;
+    OFBsnShellOutput bsnShellOutput(byte[] data);
+    OFBsnShellStatus.Builder buildBsnShellStatus() throws UnsupportedOperationException;
+    OFBsnShellStatus bsnShellStatus(long status);
+    OFBsnVirtualPortCreateReply.Builder buildBsnVirtualPortCreateReply();
+    OFBsnVirtualPortCreateRequest.Builder buildBsnVirtualPortCreateRequest();
+    OFBsnVirtualPortCreateRequest bsnVirtualPortCreateRequest(OFBsnVport vport);
+    OFBsnVirtualPortRemoveReply.Builder buildBsnVirtualPortRemoveReply();
+    OFBsnVirtualPortRemoveReply bsnVirtualPortRemoveReply(long status);
+    OFBsnVirtualPortRemoveRequest.Builder buildBsnVirtualPortRemoveRequest();
+    OFBsnVirtualPortRemoveRequest bsnVirtualPortRemoveRequest(long vportNo);
+    OFBsnVportL2Gre.Builder buildBsnVportL2Gre();
+    OFBsnVportQInQ.Builder buildBsnVportQInQ();
+    OFDescStatsReply.Builder buildDescStatsReply();
+    OFDescStatsRequest.Builder buildDescStatsRequest();
+    OFDescStatsRequest descStatsRequest(Set<OFStatsRequestFlags> flags);
+    OFEchoReply.Builder buildEchoReply();
+    OFEchoReply echoReply(byte[] data);
+    OFEchoRequest.Builder buildEchoRequest();
+    OFEchoRequest echoRequest(byte[] data);
+    OFFeaturesReply.Builder buildFeaturesReply();
+    OFFeaturesRequest.Builder buildFeaturesRequest();
+    OFFeaturesRequest featuresRequest();
+    OFFlowAdd.Builder buildFlowAdd();
+    OFFlowDelete.Builder buildFlowDelete();
+    OFFlowDeleteStrict.Builder buildFlowDeleteStrict();
+    OFFlowModify.Builder buildFlowModify();
+    OFFlowModifyStrict.Builder buildFlowModifyStrict();
+    OFFlowRemoved.Builder buildFlowRemoved();
+    OFFlowStatsEntry.Builder buildFlowStatsEntry();
+    OFFlowStatsReply.Builder buildFlowStatsReply();
+    OFFlowStatsRequest.Builder buildFlowStatsRequest();
+    OFGetConfigReply.Builder buildGetConfigReply();
+    OFGetConfigRequest.Builder buildGetConfigRequest();
+    OFGetConfigRequest getConfigRequest();
+    OFHello.Builder buildHello();
+    OFHello hello(List<OFHelloElem> elements);
+    OFMatchV1.Builder buildMatchV1() throws UnsupportedOperationException;
+    OFNiciraControllerRoleReply.Builder buildNiciraControllerRoleReply() throws UnsupportedOperationException;
+    OFNiciraControllerRoleReply niciraControllerRoleReply(OFNiciraControllerRole role);
+    OFNiciraControllerRoleRequest.Builder buildNiciraControllerRoleRequest() throws UnsupportedOperationException;
+    OFNiciraControllerRoleRequest niciraControllerRoleRequest(OFNiciraControllerRole role);
+    OFPacketIn.Builder buildPacketIn();
+    OFPacketOut.Builder buildPacketOut();
+    OFPacketQueue.Builder buildPacketQueue();
+    OFPortDesc.Builder buildPortDesc();
+    OFPortMod.Builder buildPortMod();
+    OFPortStatsEntry.Builder buildPortStatsEntry();
+    OFPortStatsReply.Builder buildPortStatsReply();
+    OFPortStatsRequest.Builder buildPortStatsRequest();
+    OFPortStatus.Builder buildPortStatus();
+    OFQueueGetConfigReply.Builder buildQueueGetConfigReply();
+    OFQueueGetConfigRequest.Builder buildQueueGetConfigRequest();
+    OFQueueGetConfigRequest queueGetConfigRequest(OFPort port);
+    OFQueueStatsEntry.Builder buildQueueStatsEntry();
+    OFQueueStatsReply.Builder buildQueueStatsReply();
+    OFQueueStatsRequest.Builder buildQueueStatsRequest();
+    OFSetConfig.Builder buildSetConfig();
+    OFTableMod.Builder buildTableMod();
+    OFTableStatsEntry.Builder buildTableStatsEntry();
+    OFTableStatsReply.Builder buildTableStatsReply();
+    OFTableStatsRequest.Builder buildTableStatsRequest();
+    OFTableStatsRequest tableStatsRequest(Set<OFStatsRequestFlags> flags);
+    OFBucket.Builder buildBucket() throws UnsupportedOperationException;
+    OFBucketCounter.Builder buildBucketCounter() throws UnsupportedOperationException;
+    OFBucketCounter bucketCounter(U64 packetCount, U64 byteCount);
+    OFGroupAdd.Builder buildGroupAdd() throws UnsupportedOperationException;
+    OFGroupDelete.Builder buildGroupDelete() throws UnsupportedOperationException;
+    OFGroupDescStatsEntry.Builder buildGroupDescStatsEntry() throws UnsupportedOperationException;
+    OFGroupDescStatsReply.Builder buildGroupDescStatsReply() throws UnsupportedOperationException;
+    OFGroupDescStatsRequest.Builder buildGroupDescStatsRequest() throws UnsupportedOperationException;
+    OFGroupDescStatsRequest groupDescStatsRequest(Set<OFStatsRequestFlags> flags);
+    OFGroupModify.Builder buildGroupModify() throws UnsupportedOperationException;
+    OFGroupStatsEntry.Builder buildGroupStatsEntry() throws UnsupportedOperationException;
+    OFGroupStatsReply.Builder buildGroupStatsReply() throws UnsupportedOperationException;
+    OFGroupStatsRequest.Builder buildGroupStatsRequest() throws UnsupportedOperationException;
+    OFMatchV2.Builder buildMatchV2() throws UnsupportedOperationException;
+    OFGroupFeaturesStatsReply.Builder buildGroupFeaturesStatsReply() throws UnsupportedOperationException;
+    OFGroupFeaturesStatsRequest.Builder buildGroupFeaturesStatsRequest() throws UnsupportedOperationException;
+    OFGroupFeaturesStatsRequest groupFeaturesStatsRequest(Set<OFStatsRequestFlags> flags);
+    OFMatchV3.Builder buildMatchV3() throws UnsupportedOperationException;
+    OFMatchV3 matchV3(OFOxmList oxmList);
+    OFRoleReply.Builder buildRoleReply() throws UnsupportedOperationException;
+    OFRoleRequest.Builder buildRoleRequest() throws UnsupportedOperationException;
+    OFAsyncGetReply.Builder buildAsyncGetReply() throws UnsupportedOperationException;
+    OFAsyncGetRequest.Builder buildAsyncGetRequest() throws UnsupportedOperationException;
+    OFAsyncSet.Builder buildAsyncSet() throws UnsupportedOperationException;
+    OFBsnArpIdle.Builder buildBsnArpIdle() throws UnsupportedOperationException;
+    OFBsnControllerConnection.Builder buildBsnControllerConnection() throws UnsupportedOperationException;
+    OFBsnControllerConnectionsReply.Builder buildBsnControllerConnectionsReply() throws UnsupportedOperationException;
+    OFBsnControllerConnectionsReply bsnControllerConnectionsReply(List<OFBsnControllerConnection> connections);
+    OFBsnControllerConnectionsRequest.Builder buildBsnControllerConnectionsRequest() throws UnsupportedOperationException;
+    OFBsnControllerConnectionsRequest bsnControllerConnectionsRequest();
+    OFBsnDebugCounterDescStatsEntry.Builder buildBsnDebugCounterDescStatsEntry() throws UnsupportedOperationException;
+    OFBsnDebugCounterDescStatsReply.Builder buildBsnDebugCounterDescStatsReply() throws UnsupportedOperationException;
+    OFBsnDebugCounterDescStatsRequest.Builder buildBsnDebugCounterDescStatsRequest() throws UnsupportedOperationException;
+    OFBsnDebugCounterDescStatsRequest bsnDebugCounterDescStatsRequest(Set<OFStatsRequestFlags> flags);
+    OFBsnDebugCounterStatsEntry.Builder buildBsnDebugCounterStatsEntry() throws UnsupportedOperationException;
+    OFBsnDebugCounterStatsEntry bsnDebugCounterStatsEntry(U64 counterId, U64 value);
+    OFBsnDebugCounterStatsReply.Builder buildBsnDebugCounterStatsReply() throws UnsupportedOperationException;
+    OFBsnDebugCounterStatsRequest.Builder buildBsnDebugCounterStatsRequest() throws UnsupportedOperationException;
+    OFBsnDebugCounterStatsRequest bsnDebugCounterStatsRequest(Set<OFStatsRequestFlags> flags);
+    OFBsnFlowChecksumBucketStatsEntry.Builder buildBsnFlowChecksumBucketStatsEntry() throws UnsupportedOperationException;
+    OFBsnFlowChecksumBucketStatsEntry bsnFlowChecksumBucketStatsEntry(U64 checksum);
+    OFBsnFlowChecksumBucketStatsReply.Builder buildBsnFlowChecksumBucketStatsReply() throws UnsupportedOperationException;
+    OFBsnFlowChecksumBucketStatsRequest.Builder buildBsnFlowChecksumBucketStatsRequest() throws UnsupportedOperationException;
+    OFBsnFlowIdle.Builder buildBsnFlowIdle() throws UnsupportedOperationException;
+    OFBsnFlowIdleEnableGetReply.Builder buildBsnFlowIdleEnableGetReply() throws UnsupportedOperationException;
+    OFBsnFlowIdleEnableGetReply bsnFlowIdleEnableGetReply(long enabled);
+    OFBsnFlowIdleEnableGetRequest.Builder buildBsnFlowIdleEnableGetRequest() throws UnsupportedOperationException;
+    OFBsnFlowIdleEnableGetRequest bsnFlowIdleEnableGetRequest();
+    OFBsnFlowIdleEnableSetReply.Builder buildBsnFlowIdleEnableSetReply() throws UnsupportedOperationException;
+    OFBsnFlowIdleEnableSetRequest.Builder buildBsnFlowIdleEnableSetRequest() throws UnsupportedOperationException;
+    OFBsnFlowIdleEnableSetRequest bsnFlowIdleEnableSetRequest(long enable);
+    OFBsnGentableBucketStatsEntry.Builder buildBsnGentableBucketStatsEntry() throws UnsupportedOperationException;
+    OFBsnGentableBucketStatsEntry bsnGentableBucketStatsEntry(U128 checksum);
+    OFBsnGentableBucketStatsReply.Builder buildBsnGentableBucketStatsReply() throws UnsupportedOperationException;
+    OFBsnGentableBucketStatsRequest.Builder buildBsnGentableBucketStatsRequest() throws UnsupportedOperationException;
+    OFBsnGentableClearReply.Builder buildBsnGentableClearReply() throws UnsupportedOperationException;
+    OFBsnGentableClearRequest.Builder buildBsnGentableClearRequest() throws UnsupportedOperationException;
+    OFBsnGentableDescStatsEntry.Builder buildBsnGentableDescStatsEntry() throws UnsupportedOperationException;
+    OFBsnGentableDescStatsReply.Builder buildBsnGentableDescStatsReply() throws UnsupportedOperationException;
+    OFBsnGentableDescStatsRequest.Builder buildBsnGentableDescStatsRequest() throws UnsupportedOperationException;
+    OFBsnGentableDescStatsRequest bsnGentableDescStatsRequest(Set<OFStatsRequestFlags> flags);
+    OFBsnGentableEntryAdd.Builder buildBsnGentableEntryAdd() throws UnsupportedOperationException;
+    OFBsnGentableEntryDelete.Builder buildBsnGentableEntryDelete() throws UnsupportedOperationException;
+    OFBsnGentableEntryDescStatsEntry.Builder buildBsnGentableEntryDescStatsEntry() throws UnsupportedOperationException;
+    OFBsnGentableEntryDescStatsReply.Builder buildBsnGentableEntryDescStatsReply() throws UnsupportedOperationException;
+    OFBsnGentableEntryDescStatsRequest.Builder buildBsnGentableEntryDescStatsRequest() throws UnsupportedOperationException;
+    OFBsnGentableEntryStatsEntry.Builder buildBsnGentableEntryStatsEntry() throws UnsupportedOperationException;
+    OFBsnGentableEntryStatsEntry bsnGentableEntryStatsEntry(List<OFBsnTlv> key, List<OFBsnTlv> stats);
+    OFBsnGentableEntryStatsReply.Builder buildBsnGentableEntryStatsReply() throws UnsupportedOperationException;
+    OFBsnGentableEntryStatsRequest.Builder buildBsnGentableEntryStatsRequest() throws UnsupportedOperationException;
+    OFBsnGentableSetBucketsSize.Builder buildBsnGentableSetBucketsSize() throws UnsupportedOperationException;
+    OFBsnGentableStatsEntry.Builder buildBsnGentableStatsEntry() throws UnsupportedOperationException;
+    OFBsnGentableStatsReply.Builder buildBsnGentableStatsReply() throws UnsupportedOperationException;
+    OFBsnGentableStatsRequest.Builder buildBsnGentableStatsRequest() throws UnsupportedOperationException;
+    OFBsnGentableStatsRequest bsnGentableStatsRequest(Set<OFStatsRequestFlags> flags);
+    OFBsnGetSwitchPipelineReply.Builder buildBsnGetSwitchPipelineReply() throws UnsupportedOperationException;
+    OFBsnGetSwitchPipelineReply bsnGetSwitchPipelineReply(String pipeline);
+    OFBsnGetSwitchPipelineRequest.Builder buildBsnGetSwitchPipelineRequest() throws UnsupportedOperationException;
+    OFBsnGetSwitchPipelineRequest bsnGetSwitchPipelineRequest();
+    OFBsnImageDescStatsReply.Builder buildBsnImageDescStatsReply() throws UnsupportedOperationException;
+    OFBsnImageDescStatsRequest.Builder buildBsnImageDescStatsRequest() throws UnsupportedOperationException;
+    OFBsnImageDescStatsRequest bsnImageDescStatsRequest(Set<OFStatsRequestFlags> flags);
+    OFBsnLacpConvergenceNotif.Builder buildBsnLacpConvergenceNotif() throws UnsupportedOperationException;
+    OFBsnLacpStatsEntry.Builder buildBsnLacpStatsEntry() throws UnsupportedOperationException;
+    OFBsnLacpStatsReply.Builder buildBsnLacpStatsReply() throws UnsupportedOperationException;
+    OFBsnLacpStatsRequest.Builder buildBsnLacpStatsRequest() throws UnsupportedOperationException;
+    OFBsnLacpStatsRequest bsnLacpStatsRequest(Set<OFStatsRequestFlags> flags);
+    OFBsnLog.Builder buildBsnLog() throws UnsupportedOperationException;
+    OFBsnPortCounterStatsEntry.Builder buildBsnPortCounterStatsEntry() throws UnsupportedOperationException;
+    OFBsnPortCounterStatsEntry bsnPortCounterStatsEntry(OFPort portNo, List<U64> values);
+    OFBsnPortCounterStatsReply.Builder buildBsnPortCounterStatsReply() throws UnsupportedOperationException;
+    OFBsnPortCounterStatsRequest.Builder buildBsnPortCounterStatsRequest() throws UnsupportedOperationException;
+    OFBsnRoleStatus.Builder buildBsnRoleStatus() throws UnsupportedOperationException;
+    OFBsnSetAuxCxnsReply.Builder buildBsnSetAuxCxnsReply() throws UnsupportedOperationException;
+    OFBsnSetAuxCxnsRequest.Builder buildBsnSetAuxCxnsRequest() throws UnsupportedOperationException;
+    OFBsnSetAuxCxnsRequest bsnSetAuxCxnsRequest(long numAux);
+    OFBsnSetLacpReply.Builder buildBsnSetLacpReply() throws UnsupportedOperationException;
+    OFBsnSetLacpRequest.Builder buildBsnSetLacpRequest() throws UnsupportedOperationException;
+    OFBsnSetSwitchPipelineReply.Builder buildBsnSetSwitchPipelineReply() throws UnsupportedOperationException;
+    OFBsnSetSwitchPipelineReply bsnSetSwitchPipelineReply(long status);
+    OFBsnSetSwitchPipelineRequest.Builder buildBsnSetSwitchPipelineRequest() throws UnsupportedOperationException;
+    OFBsnSetSwitchPipelineRequest bsnSetSwitchPipelineRequest(String pipeline);
+    OFBsnSwitchPipelineStatsEntry.Builder buildBsnSwitchPipelineStatsEntry() throws UnsupportedOperationException;
+    OFBsnSwitchPipelineStatsEntry bsnSwitchPipelineStatsEntry(String pipeline);
+    OFBsnSwitchPipelineStatsReply.Builder buildBsnSwitchPipelineStatsReply() throws UnsupportedOperationException;
+    OFBsnSwitchPipelineStatsRequest.Builder buildBsnSwitchPipelineStatsRequest() throws UnsupportedOperationException;
+    OFBsnSwitchPipelineStatsRequest bsnSwitchPipelineStatsRequest(Set<OFStatsRequestFlags> flags);
+    OFBsnTableChecksumStatsEntry.Builder buildBsnTableChecksumStatsEntry() throws UnsupportedOperationException;
+    OFBsnTableChecksumStatsEntry bsnTableChecksumStatsEntry(TableId tableId, U64 checksum);
+    OFBsnTableChecksumStatsReply.Builder buildBsnTableChecksumStatsReply() throws UnsupportedOperationException;
+    OFBsnTableChecksumStatsRequest.Builder buildBsnTableChecksumStatsRequest() throws UnsupportedOperationException;
+    OFBsnTableChecksumStatsRequest bsnTableChecksumStatsRequest(Set<OFStatsRequestFlags> flags);
+    OFBsnTableSetBucketsSize.Builder buildBsnTableSetBucketsSize() throws UnsupportedOperationException;
+    OFBsnTimeReply.Builder buildBsnTimeReply() throws UnsupportedOperationException;
+    OFBsnTimeReply bsnTimeReply(U64 timeMs);
+    OFBsnTimeRequest.Builder buildBsnTimeRequest() throws UnsupportedOperationException;
+    OFBsnTimeRequest bsnTimeRequest();
+    OFBsnVlanCounterStatsEntry.Builder buildBsnVlanCounterStatsEntry() throws UnsupportedOperationException;
+    OFBsnVlanCounterStatsEntry bsnVlanCounterStatsEntry(int vlanVid, List<U64> values);
+    OFBsnVlanCounterStatsReply.Builder buildBsnVlanCounterStatsReply() throws UnsupportedOperationException;
+    OFBsnVlanCounterStatsRequest.Builder buildBsnVlanCounterStatsRequest() throws UnsupportedOperationException;
+    OFBsnVrfCounterStatsEntry.Builder buildBsnVrfCounterStatsEntry() throws UnsupportedOperationException;
+    OFBsnVrfCounterStatsEntry bsnVrfCounterStatsEntry(long vrf, List<U64> values);
+    OFBsnVrfCounterStatsReply.Builder buildBsnVrfCounterStatsReply() throws UnsupportedOperationException;
+    OFBsnVrfCounterStatsRequest.Builder buildBsnVrfCounterStatsRequest() throws UnsupportedOperationException;
+    OFHelloElemVersionbitmap.Builder buildHelloElemVersionbitmap() throws UnsupportedOperationException;
+    OFHelloElemVersionbitmap helloElemVersionbitmap(List<U32> bitmaps);
+    OFMeterBandStats.Builder buildMeterBandStats() throws UnsupportedOperationException;
+    OFMeterBandStats meterBandStats(U64 packetBandCount, U64 byteBandCount);
+    OFMeterConfig.Builder buildMeterConfig() throws UnsupportedOperationException;
+    OFMeterConfigStatsReply.Builder buildMeterConfigStatsReply() throws UnsupportedOperationException;
+    OFMeterConfigStatsRequest.Builder buildMeterConfigStatsRequest() throws UnsupportedOperationException;
+    OFMeterFeatures.Builder buildMeterFeatures() throws UnsupportedOperationException;
+    OFMeterFeaturesStatsReply.Builder buildMeterFeaturesStatsReply() throws UnsupportedOperationException;
+    OFMeterFeaturesStatsRequest.Builder buildMeterFeaturesStatsRequest() throws UnsupportedOperationException;
+    OFMeterFeaturesStatsRequest meterFeaturesStatsRequest(Set<OFStatsRequestFlags> flags);
+    OFMeterMod.Builder buildMeterMod() throws UnsupportedOperationException;
+    OFMeterStats.Builder buildMeterStats() throws UnsupportedOperationException;
+    OFMeterStatsReply.Builder buildMeterStatsReply() throws UnsupportedOperationException;
+    OFMeterStatsRequest.Builder buildMeterStatsRequest() throws UnsupportedOperationException;
+    OFPortDescStatsReply.Builder buildPortDescStatsReply() throws UnsupportedOperationException;
+    OFPortDescStatsRequest.Builder buildPortDescStatsRequest() throws UnsupportedOperationException;
+    OFPortDescStatsRequest portDescStatsRequest(Set<OFStatsRequestFlags> flags);
+    OFTableFeaturePropApplyActions.Builder buildTableFeaturePropApplyActions() throws UnsupportedOperationException;
+    OFTableFeaturePropApplyActions tableFeaturePropApplyActions(List<OFActionId> actionIds);
+    OFTableFeaturePropApplyActionsMiss.Builder buildTableFeaturePropApplyActionsMiss() throws UnsupportedOperationException;
+    OFTableFeaturePropApplyActionsMiss tableFeaturePropApplyActionsMiss(List<OFActionId> actionIds);
+    OFTableFeaturePropApplySetfield.Builder buildTableFeaturePropApplySetfield() throws UnsupportedOperationException;
+    OFTableFeaturePropApplySetfield tableFeaturePropApplySetfield(List<U32> oxmIds);
+    OFTableFeaturePropApplySetfieldMiss.Builder buildTableFeaturePropApplySetfieldMiss() throws UnsupportedOperationException;
+    OFTableFeaturePropApplySetfieldMiss tableFeaturePropApplySetfieldMiss(List<U32> oxmIds);
+    OFTableFeaturePropExperimenter.Builder buildTableFeaturePropExperimenter() throws UnsupportedOperationException;
+    OFTableFeaturePropExperimenterMiss.Builder buildTableFeaturePropExperimenterMiss() throws UnsupportedOperationException;
+    OFTableFeaturePropInstructions.Builder buildTableFeaturePropInstructions() throws UnsupportedOperationException;
+    OFTableFeaturePropInstructions tableFeaturePropInstructions(List<OFInstructionId> instructionIds);
+    OFTableFeaturePropInstructionsMiss.Builder buildTableFeaturePropInstructionsMiss() throws UnsupportedOperationException;
+    OFTableFeaturePropInstructionsMiss tableFeaturePropInstructionsMiss(List<OFInstructionId> instructionIds);
+    OFTableFeaturePropMatch.Builder buildTableFeaturePropMatch() throws UnsupportedOperationException;
+    OFTableFeaturePropMatch tableFeaturePropMatch(List<U32> oxmIds);
+    OFTableFeaturePropNextTables.Builder buildTableFeaturePropNextTables() throws UnsupportedOperationException;
+    OFTableFeaturePropNextTables tableFeaturePropNextTables(List<U8> nextTableIds);
+    OFTableFeaturePropNextTablesMiss.Builder buildTableFeaturePropNextTablesMiss() throws UnsupportedOperationException;
+    OFTableFeaturePropNextTablesMiss tableFeaturePropNextTablesMiss(List<U8> nextTableIds);
+    OFTableFeaturePropWildcards.Builder buildTableFeaturePropWildcards() throws UnsupportedOperationException;
+    OFTableFeaturePropWildcards tableFeaturePropWildcards(List<U32> oxmIds);
+    OFTableFeaturePropWriteActions.Builder buildTableFeaturePropWriteActions() throws UnsupportedOperationException;
+    OFTableFeaturePropWriteActions tableFeaturePropWriteActions(List<OFActionId> actionIds);
+    OFTableFeaturePropWriteActionsMiss.Builder buildTableFeaturePropWriteActionsMiss() throws UnsupportedOperationException;
+    OFTableFeaturePropWriteActionsMiss tableFeaturePropWriteActionsMiss(List<OFActionId> actionIds);
+    OFTableFeaturePropWriteSetfield.Builder buildTableFeaturePropWriteSetfield() throws UnsupportedOperationException;
+    OFTableFeaturePropWriteSetfield tableFeaturePropWriteSetfield(List<U32> oxmIds);
+    OFTableFeaturePropWriteSetfieldMiss.Builder buildTableFeaturePropWriteSetfieldMiss() throws UnsupportedOperationException;
+    OFTableFeaturePropWriteSetfieldMiss tableFeaturePropWriteSetfieldMiss(List<U32> oxmIds);
+    OFTableFeatures.Builder buildTableFeatures() throws UnsupportedOperationException;
+    OFTableFeaturesStatsReply.Builder buildTableFeaturesStatsReply() throws UnsupportedOperationException;
+    OFTableFeaturesStatsRequest.Builder buildTableFeaturesStatsRequest() throws UnsupportedOperationException;
+    OFUint64.Builder buildUint64() throws UnsupportedOperationException;
+    OFUint64 uint64(U64 value);
+    Match.Builder buildMatch();
+    Match matchWildcardAll();
+
+    OFMessageReader<OFMessage> getReader();
+    OFVersion getVersion();
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFeaturesReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFeaturesReply.java
new file mode 100644
index 0000000..4d0ab31
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFeaturesReply.java
@@ -0,0 +1,69 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFFeaturesReply extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    DatapathId getDatapathId();
+    long getNBuffers();
+    short getNTables();
+    Set<OFCapabilities> getCapabilities();
+    long getReserved() throws UnsupportedOperationException;
+    List<OFPortDesc> getPorts() throws UnsupportedOperationException;
+    Set<OFActionType> getActions() throws UnsupportedOperationException;
+    OFAuxId getAuxiliaryId() throws UnsupportedOperationException;
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFFeaturesReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        DatapathId getDatapathId();
+        Builder setDatapathId(DatapathId datapathId);
+        long getNBuffers();
+        Builder setNBuffers(long nBuffers);
+        short getNTables();
+        Builder setNTables(short nTables);
+        Set<OFCapabilities> getCapabilities();
+        Builder setCapabilities(Set<OFCapabilities> capabilities);
+        long getReserved() throws UnsupportedOperationException;
+        Builder setReserved(long reserved) throws UnsupportedOperationException;
+        List<OFPortDesc> getPorts() throws UnsupportedOperationException;
+        Builder setPorts(List<OFPortDesc> ports) throws UnsupportedOperationException;
+        Set<OFActionType> getActions() throws UnsupportedOperationException;
+        Builder setActions(Set<OFActionType> actions) throws UnsupportedOperationException;
+        OFAuxId getAuxiliaryId() throws UnsupportedOperationException;
+        Builder setAuxiliaryId(OFAuxId auxiliaryId) throws UnsupportedOperationException;
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFeaturesRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFeaturesRequest.java
new file mode 100644
index 0000000..78cb71b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFeaturesRequest.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFFeaturesRequest extends OFObject, OFMessage, OFRequest<OFFeaturesReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFFeaturesRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowAdd.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowAdd.java
new file mode 100644
index 0000000..19dccbf
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowAdd.java
@@ -0,0 +1,86 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFFlowAdd extends OFObject, OFFlowMod {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    U64 getCookie();
+    U64 getCookieMask() throws UnsupportedOperationException;
+    TableId getTableId() throws UnsupportedOperationException;
+    OFFlowModCommand getCommand();
+    int getIdleTimeout();
+    int getHardTimeout();
+    int getPriority();
+    OFBufferId getBufferId();
+    OFPort getOutPort();
+    OFGroup getOutGroup() throws UnsupportedOperationException;
+    Set<OFFlowModFlags> getFlags();
+    Match getMatch();
+    List<OFInstruction> getInstructions() throws UnsupportedOperationException;
+    List<OFAction> getActions() throws UnsupportedOperationException;
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFFlowMod.Builder {
+        OFFlowAdd build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        U64 getCookie();
+        Builder setCookie(U64 cookie);
+        U64 getCookieMask() throws UnsupportedOperationException;
+        Builder setCookieMask(U64 cookieMask) throws UnsupportedOperationException;
+        TableId getTableId() throws UnsupportedOperationException;
+        Builder setTableId(TableId tableId) throws UnsupportedOperationException;
+        OFFlowModCommand getCommand();
+        int getIdleTimeout();
+        Builder setIdleTimeout(int idleTimeout);
+        int getHardTimeout();
+        Builder setHardTimeout(int hardTimeout);
+        int getPriority();
+        Builder setPriority(int priority);
+        OFBufferId getBufferId();
+        Builder setBufferId(OFBufferId bufferId);
+        OFPort getOutPort();
+        Builder setOutPort(OFPort outPort);
+        OFGroup getOutGroup() throws UnsupportedOperationException;
+        Builder setOutGroup(OFGroup outGroup) throws UnsupportedOperationException;
+        Set<OFFlowModFlags> getFlags();
+        Builder setFlags(Set<OFFlowModFlags> flags);
+        Match getMatch();
+        Builder setMatch(Match match);
+        List<OFInstruction> getInstructions() throws UnsupportedOperationException;
+        Builder setInstructions(List<OFInstruction> instructions) throws UnsupportedOperationException;
+        List<OFAction> getActions() throws UnsupportedOperationException;
+        Builder setActions(List<OFAction> actions) throws UnsupportedOperationException;
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowDelete.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowDelete.java
new file mode 100644
index 0000000..09f7f3a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowDelete.java
@@ -0,0 +1,86 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFFlowDelete extends OFObject, OFFlowMod {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    U64 getCookie();
+    U64 getCookieMask() throws UnsupportedOperationException;
+    TableId getTableId() throws UnsupportedOperationException;
+    OFFlowModCommand getCommand();
+    int getIdleTimeout();
+    int getHardTimeout();
+    int getPriority();
+    OFBufferId getBufferId();
+    OFPort getOutPort();
+    OFGroup getOutGroup() throws UnsupportedOperationException;
+    Set<OFFlowModFlags> getFlags();
+    Match getMatch();
+    List<OFInstruction> getInstructions() throws UnsupportedOperationException;
+    List<OFAction> getActions() throws UnsupportedOperationException;
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFFlowMod.Builder {
+        OFFlowDelete build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        U64 getCookie();
+        Builder setCookie(U64 cookie);
+        U64 getCookieMask() throws UnsupportedOperationException;
+        Builder setCookieMask(U64 cookieMask) throws UnsupportedOperationException;
+        TableId getTableId() throws UnsupportedOperationException;
+        Builder setTableId(TableId tableId) throws UnsupportedOperationException;
+        OFFlowModCommand getCommand();
+        int getIdleTimeout();
+        Builder setIdleTimeout(int idleTimeout);
+        int getHardTimeout();
+        Builder setHardTimeout(int hardTimeout);
+        int getPriority();
+        Builder setPriority(int priority);
+        OFBufferId getBufferId();
+        Builder setBufferId(OFBufferId bufferId);
+        OFPort getOutPort();
+        Builder setOutPort(OFPort outPort);
+        OFGroup getOutGroup() throws UnsupportedOperationException;
+        Builder setOutGroup(OFGroup outGroup) throws UnsupportedOperationException;
+        Set<OFFlowModFlags> getFlags();
+        Builder setFlags(Set<OFFlowModFlags> flags);
+        Match getMatch();
+        Builder setMatch(Match match);
+        List<OFInstruction> getInstructions() throws UnsupportedOperationException;
+        Builder setInstructions(List<OFInstruction> instructions) throws UnsupportedOperationException;
+        List<OFAction> getActions() throws UnsupportedOperationException;
+        Builder setActions(List<OFAction> actions) throws UnsupportedOperationException;
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowDeleteStrict.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowDeleteStrict.java
new file mode 100644
index 0000000..72931d1
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowDeleteStrict.java
@@ -0,0 +1,86 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFFlowDeleteStrict extends OFObject, OFFlowMod {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    U64 getCookie();
+    U64 getCookieMask() throws UnsupportedOperationException;
+    TableId getTableId() throws UnsupportedOperationException;
+    OFFlowModCommand getCommand();
+    int getIdleTimeout();
+    int getHardTimeout();
+    int getPriority();
+    OFBufferId getBufferId();
+    OFPort getOutPort();
+    OFGroup getOutGroup() throws UnsupportedOperationException;
+    Set<OFFlowModFlags> getFlags();
+    Match getMatch();
+    List<OFInstruction> getInstructions() throws UnsupportedOperationException;
+    List<OFAction> getActions() throws UnsupportedOperationException;
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFFlowMod.Builder {
+        OFFlowDeleteStrict build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        U64 getCookie();
+        Builder setCookie(U64 cookie);
+        U64 getCookieMask() throws UnsupportedOperationException;
+        Builder setCookieMask(U64 cookieMask) throws UnsupportedOperationException;
+        TableId getTableId() throws UnsupportedOperationException;
+        Builder setTableId(TableId tableId) throws UnsupportedOperationException;
+        OFFlowModCommand getCommand();
+        int getIdleTimeout();
+        Builder setIdleTimeout(int idleTimeout);
+        int getHardTimeout();
+        Builder setHardTimeout(int hardTimeout);
+        int getPriority();
+        Builder setPriority(int priority);
+        OFBufferId getBufferId();
+        Builder setBufferId(OFBufferId bufferId);
+        OFPort getOutPort();
+        Builder setOutPort(OFPort outPort);
+        OFGroup getOutGroup() throws UnsupportedOperationException;
+        Builder setOutGroup(OFGroup outGroup) throws UnsupportedOperationException;
+        Set<OFFlowModFlags> getFlags();
+        Builder setFlags(Set<OFFlowModFlags> flags);
+        Match getMatch();
+        Builder setMatch(Match match);
+        List<OFInstruction> getInstructions() throws UnsupportedOperationException;
+        Builder setInstructions(List<OFInstruction> instructions) throws UnsupportedOperationException;
+        List<OFAction> getActions() throws UnsupportedOperationException;
+        Builder setActions(List<OFAction> actions) throws UnsupportedOperationException;
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowMod.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowMod.java
new file mode 100644
index 0000000..76da051
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowMod.java
@@ -0,0 +1,86 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFFlowMod extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    U64 getCookie();
+    U64 getCookieMask() throws UnsupportedOperationException;
+    TableId getTableId() throws UnsupportedOperationException;
+    OFFlowModCommand getCommand();
+    int getIdleTimeout();
+    int getHardTimeout();
+    int getPriority();
+    OFBufferId getBufferId();
+    OFPort getOutPort();
+    OFGroup getOutGroup() throws UnsupportedOperationException;
+    Set<OFFlowModFlags> getFlags();
+    Match getMatch();
+    List<OFInstruction> getInstructions() throws UnsupportedOperationException;
+    List<OFAction> getActions() throws UnsupportedOperationException;
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFFlowMod build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        U64 getCookie();
+        Builder setCookie(U64 cookie);
+        U64 getCookieMask() throws UnsupportedOperationException;
+        Builder setCookieMask(U64 cookieMask) throws UnsupportedOperationException;
+        TableId getTableId() throws UnsupportedOperationException;
+        Builder setTableId(TableId tableId) throws UnsupportedOperationException;
+        OFFlowModCommand getCommand();
+        int getIdleTimeout();
+        Builder setIdleTimeout(int idleTimeout);
+        int getHardTimeout();
+        Builder setHardTimeout(int hardTimeout);
+        int getPriority();
+        Builder setPriority(int priority);
+        OFBufferId getBufferId();
+        Builder setBufferId(OFBufferId bufferId);
+        OFPort getOutPort();
+        Builder setOutPort(OFPort outPort);
+        OFGroup getOutGroup() throws UnsupportedOperationException;
+        Builder setOutGroup(OFGroup outGroup) throws UnsupportedOperationException;
+        Set<OFFlowModFlags> getFlags();
+        Builder setFlags(Set<OFFlowModFlags> flags);
+        Match getMatch();
+        Builder setMatch(Match match);
+        List<OFInstruction> getInstructions() throws UnsupportedOperationException;
+        Builder setInstructions(List<OFInstruction> instructions) throws UnsupportedOperationException;
+        List<OFAction> getActions() throws UnsupportedOperationException;
+        Builder setActions(List<OFAction> actions) throws UnsupportedOperationException;
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowModCommand.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowModCommand.java
new file mode 100644
index 0000000..dd0b856
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowModCommand.java
@@ -0,0 +1,33 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFFlowModCommand {
+     ADD,
+     MODIFY,
+     MODIFY_STRICT,
+     DELETE,
+     DELETE_STRICT;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowModFailedCode.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowModFailedCode.java
new file mode 100644
index 0000000..17cf0d2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowModFailedCode.java
@@ -0,0 +1,39 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFFlowModFailedCode {
+     ALL_TABLES_FULL,
+     OVERLAP,
+     EPERM,
+     BAD_EMERG_TIMEOUT,
+     BAD_COMMAND,
+     UNSUPPORTED,
+     UNKNOWN,
+     TABLE_FULL,
+     BAD_TABLE_ID,
+     BAD_TIMEOUT,
+     BAD_FLAGS;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowModFlags.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowModFlags.java
new file mode 100644
index 0000000..86c709f
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowModFlags.java
@@ -0,0 +1,35 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFFlowModFlags {
+     SEND_FLOW_REM,
+     CHECK_OVERLAP,
+     EMERG,
+     RESET_COUNTS,
+     NO_PKT_COUNTS,
+     NO_BYT_COUNTS,
+     BSN_SEND_IDLE;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowModify.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowModify.java
new file mode 100644
index 0000000..cc3129f
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowModify.java
@@ -0,0 +1,86 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFFlowModify extends OFObject, OFFlowMod {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    U64 getCookie();
+    U64 getCookieMask() throws UnsupportedOperationException;
+    TableId getTableId() throws UnsupportedOperationException;
+    OFFlowModCommand getCommand();
+    int getIdleTimeout();
+    int getHardTimeout();
+    int getPriority();
+    OFBufferId getBufferId();
+    OFPort getOutPort();
+    OFGroup getOutGroup() throws UnsupportedOperationException;
+    Set<OFFlowModFlags> getFlags();
+    Match getMatch();
+    List<OFInstruction> getInstructions() throws UnsupportedOperationException;
+    List<OFAction> getActions() throws UnsupportedOperationException;
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFFlowMod.Builder {
+        OFFlowModify build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        U64 getCookie();
+        Builder setCookie(U64 cookie);
+        U64 getCookieMask() throws UnsupportedOperationException;
+        Builder setCookieMask(U64 cookieMask) throws UnsupportedOperationException;
+        TableId getTableId() throws UnsupportedOperationException;
+        Builder setTableId(TableId tableId) throws UnsupportedOperationException;
+        OFFlowModCommand getCommand();
+        int getIdleTimeout();
+        Builder setIdleTimeout(int idleTimeout);
+        int getHardTimeout();
+        Builder setHardTimeout(int hardTimeout);
+        int getPriority();
+        Builder setPriority(int priority);
+        OFBufferId getBufferId();
+        Builder setBufferId(OFBufferId bufferId);
+        OFPort getOutPort();
+        Builder setOutPort(OFPort outPort);
+        OFGroup getOutGroup() throws UnsupportedOperationException;
+        Builder setOutGroup(OFGroup outGroup) throws UnsupportedOperationException;
+        Set<OFFlowModFlags> getFlags();
+        Builder setFlags(Set<OFFlowModFlags> flags);
+        Match getMatch();
+        Builder setMatch(Match match);
+        List<OFInstruction> getInstructions() throws UnsupportedOperationException;
+        Builder setInstructions(List<OFInstruction> instructions) throws UnsupportedOperationException;
+        List<OFAction> getActions() throws UnsupportedOperationException;
+        Builder setActions(List<OFAction> actions) throws UnsupportedOperationException;
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowModifyStrict.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowModifyStrict.java
new file mode 100644
index 0000000..15809c9
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowModifyStrict.java
@@ -0,0 +1,86 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFFlowModifyStrict extends OFObject, OFFlowMod {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    U64 getCookie();
+    U64 getCookieMask() throws UnsupportedOperationException;
+    TableId getTableId() throws UnsupportedOperationException;
+    OFFlowModCommand getCommand();
+    int getIdleTimeout();
+    int getHardTimeout();
+    int getPriority();
+    OFBufferId getBufferId();
+    OFPort getOutPort();
+    OFGroup getOutGroup() throws UnsupportedOperationException;
+    Set<OFFlowModFlags> getFlags();
+    Match getMatch();
+    List<OFInstruction> getInstructions() throws UnsupportedOperationException;
+    List<OFAction> getActions() throws UnsupportedOperationException;
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFFlowMod.Builder {
+        OFFlowModifyStrict build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        U64 getCookie();
+        Builder setCookie(U64 cookie);
+        U64 getCookieMask() throws UnsupportedOperationException;
+        Builder setCookieMask(U64 cookieMask) throws UnsupportedOperationException;
+        TableId getTableId() throws UnsupportedOperationException;
+        Builder setTableId(TableId tableId) throws UnsupportedOperationException;
+        OFFlowModCommand getCommand();
+        int getIdleTimeout();
+        Builder setIdleTimeout(int idleTimeout);
+        int getHardTimeout();
+        Builder setHardTimeout(int hardTimeout);
+        int getPriority();
+        Builder setPriority(int priority);
+        OFBufferId getBufferId();
+        Builder setBufferId(OFBufferId bufferId);
+        OFPort getOutPort();
+        Builder setOutPort(OFPort outPort);
+        OFGroup getOutGroup() throws UnsupportedOperationException;
+        Builder setOutGroup(OFGroup outGroup) throws UnsupportedOperationException;
+        Set<OFFlowModFlags> getFlags();
+        Builder setFlags(Set<OFFlowModFlags> flags);
+        Match getMatch();
+        Builder setMatch(Match match);
+        List<OFInstruction> getInstructions() throws UnsupportedOperationException;
+        Builder setInstructions(List<OFInstruction> instructions) throws UnsupportedOperationException;
+        List<OFAction> getActions() throws UnsupportedOperationException;
+        Builder setActions(List<OFAction> actions) throws UnsupportedOperationException;
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowRemoved.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowRemoved.java
new file mode 100644
index 0000000..186b8a6
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowRemoved.java
@@ -0,0 +1,76 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFFlowRemoved extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    U64 getCookie();
+    int getPriority();
+    short getReason();
+    TableId getTableId() throws UnsupportedOperationException;
+    long getDurationSec();
+    long getDurationNsec();
+    int getIdleTimeout();
+    int getHardTimeout() throws UnsupportedOperationException;
+    U64 getPacketCount();
+    U64 getByteCount();
+    Match getMatch();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFFlowRemoved build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        U64 getCookie();
+        Builder setCookie(U64 cookie);
+        int getPriority();
+        Builder setPriority(int priority);
+        short getReason();
+        Builder setReason(short reason);
+        TableId getTableId() throws UnsupportedOperationException;
+        Builder setTableId(TableId tableId) throws UnsupportedOperationException;
+        long getDurationSec();
+        Builder setDurationSec(long durationSec);
+        long getDurationNsec();
+        Builder setDurationNsec(long durationNsec);
+        int getIdleTimeout();
+        Builder setIdleTimeout(int idleTimeout);
+        int getHardTimeout() throws UnsupportedOperationException;
+        Builder setHardTimeout(int hardTimeout) throws UnsupportedOperationException;
+        U64 getPacketCount();
+        Builder setPacketCount(U64 packetCount);
+        U64 getByteCount();
+        Builder setByteCount(U64 byteCount);
+        Match getMatch();
+        Builder setMatch(Match match);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowRemovedReason.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowRemovedReason.java
new file mode 100644
index 0000000..689b43f
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowRemovedReason.java
@@ -0,0 +1,32 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFFlowRemovedReason {
+     IDLE_TIMEOUT,
+     HARD_TIMEOUT,
+     DELETE,
+     GROUP_DELETE;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowStatsEntry.java
new file mode 100644
index 0000000..db9b486
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowStatsEntry.java
@@ -0,0 +1,79 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFFlowStatsEntry extends OFObject {
+    TableId getTableId();
+    long getDurationSec();
+    long getDurationNsec();
+    int getPriority();
+    int getIdleTimeout();
+    int getHardTimeout();
+    U64 getCookie();
+    U64 getPacketCount();
+    U64 getByteCount();
+    Match getMatch();
+    List<OFInstruction> getInstructions() throws UnsupportedOperationException;
+    List<OFAction> getActions() throws UnsupportedOperationException;
+    Set<OFFlowModFlags> getFlags() throws UnsupportedOperationException;
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFFlowStatsEntry build();
+        TableId getTableId();
+        Builder setTableId(TableId tableId);
+        long getDurationSec();
+        Builder setDurationSec(long durationSec);
+        long getDurationNsec();
+        Builder setDurationNsec(long durationNsec);
+        int getPriority();
+        Builder setPriority(int priority);
+        int getIdleTimeout();
+        Builder setIdleTimeout(int idleTimeout);
+        int getHardTimeout();
+        Builder setHardTimeout(int hardTimeout);
+        U64 getCookie();
+        Builder setCookie(U64 cookie);
+        U64 getPacketCount();
+        Builder setPacketCount(U64 packetCount);
+        U64 getByteCount();
+        Builder setByteCount(U64 byteCount);
+        Match getMatch();
+        Builder setMatch(Match match);
+        List<OFInstruction> getInstructions() throws UnsupportedOperationException;
+        Builder setInstructions(List<OFInstruction> instructions) throws UnsupportedOperationException;
+        List<OFAction> getActions() throws UnsupportedOperationException;
+        Builder setActions(List<OFAction> actions) throws UnsupportedOperationException;
+        Set<OFFlowModFlags> getFlags() throws UnsupportedOperationException;
+        Builder setFlags(Set<OFFlowModFlags> flags) throws UnsupportedOperationException;
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowStatsReply.java
new file mode 100644
index 0000000..488acc2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowStatsReply.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFFlowStatsReply extends OFObject, OFStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    List<OFFlowStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsReply.Builder {
+        OFFlowStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        List<OFFlowStatsEntry> getEntries();
+        Builder setEntries(List<OFFlowStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowStatsRequest.java
new file mode 100644
index 0000000..56fd5d8
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowStatsRequest.java
@@ -0,0 +1,67 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFFlowStatsRequest extends OFObject, OFStatsRequest<OFFlowStatsReply>, OFRequest<OFFlowStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    TableId getTableId();
+    OFPort getOutPort();
+    OFGroup getOutGroup() throws UnsupportedOperationException;
+    U64 getCookie() throws UnsupportedOperationException;
+    U64 getCookieMask() throws UnsupportedOperationException;
+    Match getMatch();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsRequest.Builder<OFFlowStatsReply> {
+        OFFlowStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        TableId getTableId();
+        Builder setTableId(TableId tableId);
+        OFPort getOutPort();
+        Builder setOutPort(OFPort outPort);
+        OFGroup getOutGroup() throws UnsupportedOperationException;
+        Builder setOutGroup(OFGroup outGroup) throws UnsupportedOperationException;
+        U64 getCookie() throws UnsupportedOperationException;
+        Builder setCookie(U64 cookie) throws UnsupportedOperationException;
+        U64 getCookieMask() throws UnsupportedOperationException;
+        Builder setCookieMask(U64 cookieMask) throws UnsupportedOperationException;
+        Match getMatch();
+        Builder setMatch(Match match);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowWildcards.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowWildcards.java
new file mode 100644
index 0000000..d732d7d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFFlowWildcards.java
@@ -0,0 +1,45 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFFlowWildcards {
+     IN_PORT,
+     DL_VLAN,
+     DL_SRC,
+     DL_DST,
+     DL_TYPE,
+     NW_PROTO,
+     TP_SRC,
+     TP_DST,
+     NW_SRC_ALL,
+     NW_SRC_MASK,
+     NW_DST_ALL,
+     NW_DST_MASK,
+     DL_VLAN_PCP,
+     NW_TOS,
+     ALL,
+     MPLS_LABEL,
+     MPLS_TC;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGetConfigReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGetConfigReply.java
new file mode 100644
index 0000000..d3c0bd8
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGetConfigReply.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFGetConfigReply extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    Set<OFConfigFlags> getFlags();
+    int getMissSendLen();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFGetConfigReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        Set<OFConfigFlags> getFlags();
+        Builder setFlags(Set<OFConfigFlags> flags);
+        int getMissSendLen();
+        Builder setMissSendLen(int missSendLen);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGetConfigRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGetConfigRequest.java
new file mode 100644
index 0000000..ec49dfe
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGetConfigRequest.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFGetConfigRequest extends OFObject, OFMessage, OFRequest<OFGetConfigReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFGetConfigRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupAdd.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupAdd.java
new file mode 100644
index 0000000..6502d85
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupAdd.java
@@ -0,0 +1,55 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFGroupAdd extends OFObject, OFGroupMod {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFGroupModCommand getCommand();
+    OFGroupType getGroupType();
+    OFGroup getGroup();
+    List<OFBucket> getBuckets();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFGroupMod.Builder {
+        OFGroupAdd build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFGroupModCommand getCommand();
+        OFGroupType getGroupType();
+        Builder setGroupType(OFGroupType groupType);
+        OFGroup getGroup();
+        Builder setGroup(OFGroup group);
+        List<OFBucket> getBuckets();
+        Builder setBuckets(List<OFBucket> buckets);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupCapabilities.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupCapabilities.java
new file mode 100644
index 0000000..679fad6
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupCapabilities.java
@@ -0,0 +1,32 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFGroupCapabilities {
+     SELECT_WEIGHT,
+     SELECT_LIVENESS,
+     CHAINING,
+     CHAINING_CHECKS;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupDelete.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupDelete.java
new file mode 100644
index 0000000..c649b82
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupDelete.java
@@ -0,0 +1,55 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFGroupDelete extends OFObject, OFGroupMod {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFGroupModCommand getCommand();
+    OFGroupType getGroupType();
+    OFGroup getGroup();
+    List<OFBucket> getBuckets();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFGroupMod.Builder {
+        OFGroupDelete build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFGroupModCommand getCommand();
+        OFGroupType getGroupType();
+        Builder setGroupType(OFGroupType groupType);
+        OFGroup getGroup();
+        Builder setGroup(OFGroup group);
+        List<OFBucket> getBuckets();
+        Builder setBuckets(List<OFBucket> buckets);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupDescStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupDescStatsEntry.java
new file mode 100644
index 0000000..be11fa0
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupDescStatsEntry.java
@@ -0,0 +1,48 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFGroupDescStatsEntry extends OFObject {
+    OFGroupType getGroupType();
+    OFGroup getGroup();
+    List<OFBucket> getBuckets();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFGroupDescStatsEntry build();
+        OFGroupType getGroupType();
+        Builder setGroupType(OFGroupType groupType);
+        OFGroup getGroup();
+        Builder setGroup(OFGroup group);
+        List<OFBucket> getBuckets();
+        Builder setBuckets(List<OFBucket> buckets);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupDescStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupDescStatsReply.java
new file mode 100644
index 0000000..c3943e8
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupDescStatsReply.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFGroupDescStatsReply extends OFObject, OFStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    List<OFGroupDescStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsReply.Builder {
+        OFGroupDescStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        List<OFGroupDescStatsEntry> getEntries();
+        Builder setEntries(List<OFGroupDescStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupDescStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupDescStatsRequest.java
new file mode 100644
index 0000000..260e411
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupDescStatsRequest.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFGroupDescStatsRequest extends OFObject, OFStatsRequest<OFGroupDescStatsReply>, OFRequest<OFGroupDescStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsRequest.Builder<OFGroupDescStatsReply> {
+        OFGroupDescStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupFeaturesStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupFeaturesStatsReply.java
new file mode 100644
index 0000000..c449fdf
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupFeaturesStatsReply.java
@@ -0,0 +1,79 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFGroupFeaturesStatsReply extends OFObject, OFStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    long getTypes();
+    long getCapabilities();
+    long getMaxGroupsAll();
+    long getMaxGroupsSelect();
+    long getMaxGroupsIndirect();
+    long getMaxGroupsFf();
+    long getActionsAll();
+    long getActionsSelect();
+    long getActionsIndirect();
+    long getActionsFf();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsReply.Builder {
+        OFGroupFeaturesStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        long getTypes();
+        Builder setTypes(long types);
+        long getCapabilities();
+        Builder setCapabilities(long capabilities);
+        long getMaxGroupsAll();
+        Builder setMaxGroupsAll(long maxGroupsAll);
+        long getMaxGroupsSelect();
+        Builder setMaxGroupsSelect(long maxGroupsSelect);
+        long getMaxGroupsIndirect();
+        Builder setMaxGroupsIndirect(long maxGroupsIndirect);
+        long getMaxGroupsFf();
+        Builder setMaxGroupsFf(long maxGroupsFf);
+        long getActionsAll();
+        Builder setActionsAll(long actionsAll);
+        long getActionsSelect();
+        Builder setActionsSelect(long actionsSelect);
+        long getActionsIndirect();
+        Builder setActionsIndirect(long actionsIndirect);
+        long getActionsFf();
+        Builder setActionsFf(long actionsFf);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupFeaturesStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupFeaturesStatsRequest.java
new file mode 100644
index 0000000..741a13d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupFeaturesStatsRequest.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFGroupFeaturesStatsRequest extends OFObject, OFStatsRequest<OFGroupFeaturesStatsReply>, OFRequest<OFGroupFeaturesStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsRequest.Builder<OFGroupFeaturesStatsReply> {
+        OFGroupFeaturesStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupMod.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupMod.java
new file mode 100644
index 0000000..65bfe68
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupMod.java
@@ -0,0 +1,55 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFGroupMod extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFGroupModCommand getCommand();
+    OFGroupType getGroupType();
+    OFGroup getGroup();
+    List<OFBucket> getBuckets();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFGroupMod build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFGroupModCommand getCommand();
+        OFGroupType getGroupType();
+        Builder setGroupType(OFGroupType groupType);
+        OFGroup getGroup();
+        Builder setGroup(OFGroup group);
+        List<OFBucket> getBuckets();
+        Builder setBuckets(List<OFBucket> buckets);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupModCommand.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupModCommand.java
new file mode 100644
index 0000000..30f122c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupModCommand.java
@@ -0,0 +1,31 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFGroupModCommand {
+     ADD,
+     MODIFY,
+     DELETE;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupModFailedCode.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupModFailedCode.java
new file mode 100644
index 0000000..e88b22d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupModFailedCode.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFGroupModFailedCode {
+     GROUP_EXISTS,
+     INVALID_GROUP,
+     WEIGHT_UNSUPPORTED,
+     OUT_OF_GROUPS,
+     OUT_OF_BUCKETS,
+     CHAINING_UNSUPPORTED,
+     WATCH_UNSUPPORTED,
+     LOOP,
+     UNKNOWN_GROUP,
+     CHAINED_GROUP,
+     BAD_TYPE,
+     BAD_COMMAND,
+     BAD_BUCKET,
+     BAD_WATCH,
+     EPERM;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupModify.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupModify.java
new file mode 100644
index 0000000..3c408fe
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupModify.java
@@ -0,0 +1,55 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFGroupModify extends OFObject, OFGroupMod {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFGroupModCommand getCommand();
+    OFGroupType getGroupType();
+    OFGroup getGroup();
+    List<OFBucket> getBuckets();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFGroupMod.Builder {
+        OFGroupModify build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFGroupModCommand getCommand();
+        OFGroupType getGroupType();
+        Builder setGroupType(OFGroupType groupType);
+        OFGroup getGroup();
+        Builder setGroup(OFGroup group);
+        List<OFBucket> getBuckets();
+        Builder setBuckets(List<OFBucket> buckets);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupStatsEntry.java
new file mode 100644
index 0000000..efa4bf2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupStatsEntry.java
@@ -0,0 +1,60 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFGroupStatsEntry extends OFObject {
+    OFGroup getGroup();
+    long getRefCount();
+    U64 getPacketCount();
+    U64 getByteCount();
+    List<OFBucketCounter> getBucketStats();
+    long getDurationSec() throws UnsupportedOperationException;
+    long getDurationNsec() throws UnsupportedOperationException;
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFGroupStatsEntry build();
+        OFGroup getGroup();
+        Builder setGroup(OFGroup group);
+        long getRefCount();
+        Builder setRefCount(long refCount);
+        U64 getPacketCount();
+        Builder setPacketCount(U64 packetCount);
+        U64 getByteCount();
+        Builder setByteCount(U64 byteCount);
+        List<OFBucketCounter> getBucketStats();
+        Builder setBucketStats(List<OFBucketCounter> bucketStats);
+        long getDurationSec() throws UnsupportedOperationException;
+        Builder setDurationSec(long durationSec) throws UnsupportedOperationException;
+        long getDurationNsec() throws UnsupportedOperationException;
+        Builder setDurationNsec(long durationNsec) throws UnsupportedOperationException;
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupStatsReply.java
new file mode 100644
index 0000000..df8ea80
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupStatsReply.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFGroupStatsReply extends OFObject, OFStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    List<OFGroupStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsReply.Builder {
+        OFGroupStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        List<OFGroupStatsEntry> getEntries();
+        Builder setEntries(List<OFGroupStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupStatsRequest.java
new file mode 100644
index 0000000..24bdcb5
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupStatsRequest.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFGroupStatsRequest extends OFObject, OFStatsRequest<OFGroupStatsReply>, OFRequest<OFGroupStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    OFGroup getGroup();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsRequest.Builder<OFGroupStatsReply> {
+        OFGroupStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        OFGroup getGroup();
+        Builder setGroup(OFGroup group);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupType.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupType.java
new file mode 100644
index 0000000..bd7c37e
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFGroupType.java
@@ -0,0 +1,32 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFGroupType {
+     ALL,
+     SELECT,
+     INDIRECT,
+     FF;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFHello.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFHello.java
new file mode 100644
index 0000000..0858559
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFHello.java
@@ -0,0 +1,47 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFHello extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    List<OFHelloElem> getElements() throws UnsupportedOperationException;
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFHello build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        List<OFHelloElem> getElements() throws UnsupportedOperationException;
+        Builder setElements(List<OFHelloElem> elements) throws UnsupportedOperationException;
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFHelloElem.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFHelloElem.java
new file mode 100644
index 0000000..68d69cc
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFHelloElem.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFHelloElem extends OFObject {
+    int getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFHelloElem build();
+        int getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFHelloElemType.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFHelloElemType.java
new file mode 100644
index 0000000..1b221bd
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFHelloElemType.java
@@ -0,0 +1,29 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFHelloElemType {
+     VERSIONBITMAP;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFHelloElemVersionbitmap.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFHelloElemVersionbitmap.java
new file mode 100644
index 0000000..e8eb3c7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFHelloElemVersionbitmap.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFHelloElemVersionbitmap extends OFObject, OFHelloElem {
+    int getType();
+    List<U32> getBitmaps();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFHelloElem.Builder {
+        OFHelloElemVersionbitmap build();
+        int getType();
+        List<U32> getBitmaps();
+        Builder setBitmaps(List<U32> bitmaps);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFHelloFailedCode.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFHelloFailedCode.java
new file mode 100644
index 0000000..92312dd
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFHelloFailedCode.java
@@ -0,0 +1,30 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFHelloFailedCode {
+     INCOMPATIBLE,
+     EPERM;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFInstructionType.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFInstructionType.java
new file mode 100644
index 0000000..8fc38eb
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFInstructionType.java
@@ -0,0 +1,35 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFInstructionType {
+     GOTO_TABLE,
+     WRITE_METADATA,
+     WRITE_ACTIONS,
+     APPLY_ACTIONS,
+     CLEAR_ACTIONS,
+     EXPERIMENTER,
+     METER;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFIpv6ExthdrFlags.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFIpv6ExthdrFlags.java
new file mode 100644
index 0000000..7c33b94
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFIpv6ExthdrFlags.java
@@ -0,0 +1,37 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFIpv6ExthdrFlags {
+     NONEXT,
+     ESP,
+     AUTH,
+     DEST,
+     FRAG,
+     ROUTER,
+     HOP,
+     UNREP,
+     UNSEQ;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMatchType.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMatchType.java
new file mode 100644
index 0000000..17e768c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMatchType.java
@@ -0,0 +1,30 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFMatchType {
+     STANDARD,
+     OXM;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMatchV1.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMatchV1.java
new file mode 100644
index 0000000..06deb6b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMatchV1.java
@@ -0,0 +1,77 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMatchV1 extends OFObject, Match {
+    int getWildcards();
+    OFPort getInPort();
+    MacAddress getEthSrc();
+    MacAddress getEthDst();
+    OFVlanVidMatch getVlanVid();
+    VlanPcp getVlanPcp();
+    EthType getEthType();
+    IpDscp getIpDscp();
+    IpProtocol getIpProto();
+    IPv4Address getIpv4Src();
+    IPv4Address getIpv4Dst();
+    TransportPort getTcpSrc();
+    TransportPort getTcpDst();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends Match.Builder {
+        OFMatchV1 build();
+        int getWildcards();
+        Builder setWildcards(int wildcards);
+        OFPort getInPort();
+        Builder setInPort(OFPort inPort);
+        MacAddress getEthSrc();
+        Builder setEthSrc(MacAddress ethSrc);
+        MacAddress getEthDst();
+        Builder setEthDst(MacAddress ethDst);
+        OFVlanVidMatch getVlanVid();
+        Builder setVlanVid(OFVlanVidMatch vlanVid);
+        VlanPcp getVlanPcp();
+        Builder setVlanPcp(VlanPcp vlanPcp);
+        EthType getEthType();
+        Builder setEthType(EthType ethType);
+        IpDscp getIpDscp();
+        Builder setIpDscp(IpDscp ipDscp);
+        IpProtocol getIpProto();
+        Builder setIpProto(IpProtocol ipProto);
+        IPv4Address getIpv4Src();
+        Builder setIpv4Src(IPv4Address ipv4Src);
+        IPv4Address getIpv4Dst();
+        Builder setIpv4Dst(IPv4Address ipv4Dst);
+        TransportPort getTcpSrc();
+        Builder setTcpSrc(TransportPort tcpSrc);
+        TransportPort getTcpDst();
+        Builder setTcpDst(TransportPort tcpDst);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMatchV2.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMatchV2.java
new file mode 100644
index 0000000..7d40266
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMatchV2.java
@@ -0,0 +1,103 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMatchV2 extends OFObject, Match {
+    int getType();
+    OFPort getInPort();
+    int getWildcards();
+    MacAddress getEthSrc();
+    MacAddress getEthSrcMask();
+    MacAddress getEthDst();
+    MacAddress getEthDstMask();
+    int getVlanVid();
+    short getVlanPcp();
+    int getEthType();
+    short getIpDscp();
+    short getIpProto();
+    IPv4Address getIpv4Src();
+    IPv4Address getIpv4SrcMask();
+    IPv4Address getIpv4Dst();
+    IPv4Address getIpv4DstMask();
+    int getTcpSrc();
+    int getTcpDst();
+    long getMplsLabel();
+    short getMplsTc();
+    U64 getMetadata();
+    U64 getMetadataMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends Match.Builder {
+        OFMatchV2 build();
+        int getType();
+        OFPort getInPort();
+        Builder setInPort(OFPort inPort);
+        int getWildcards();
+        Builder setWildcards(int wildcards);
+        MacAddress getEthSrc();
+        Builder setEthSrc(MacAddress ethSrc);
+        MacAddress getEthSrcMask();
+        Builder setEthSrcMask(MacAddress ethSrcMask);
+        MacAddress getEthDst();
+        Builder setEthDst(MacAddress ethDst);
+        MacAddress getEthDstMask();
+        Builder setEthDstMask(MacAddress ethDstMask);
+        int getVlanVid();
+        Builder setVlanVid(int vlanVid);
+        short getVlanPcp();
+        Builder setVlanPcp(short vlanPcp);
+        int getEthType();
+        Builder setEthType(int ethType);
+        short getIpDscp();
+        Builder setIpDscp(short ipDscp);
+        short getIpProto();
+        Builder setIpProto(short ipProto);
+        IPv4Address getIpv4Src();
+        Builder setIpv4Src(IPv4Address ipv4Src);
+        IPv4Address getIpv4SrcMask();
+        Builder setIpv4SrcMask(IPv4Address ipv4SrcMask);
+        IPv4Address getIpv4Dst();
+        Builder setIpv4Dst(IPv4Address ipv4Dst);
+        IPv4Address getIpv4DstMask();
+        Builder setIpv4DstMask(IPv4Address ipv4DstMask);
+        int getTcpSrc();
+        Builder setTcpSrc(int tcpSrc);
+        int getTcpDst();
+        Builder setTcpDst(int tcpDst);
+        long getMplsLabel();
+        Builder setMplsLabel(long mplsLabel);
+        short getMplsTc();
+        Builder setMplsTc(short mplsTc);
+        U64 getMetadata();
+        Builder setMetadata(U64 metadata);
+        U64 getMetadataMask();
+        Builder setMetadataMask(U64 metadataMask);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMatchV3.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMatchV3.java
new file mode 100644
index 0000000..6bfca6e
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMatchV3.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMatchV3 extends OFObject, Match {
+    int getType();
+    OFOxmList getOxmList();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends Match.Builder {
+        OFMatchV3 build();
+        int getType();
+        OFOxmList getOxmList();
+        Builder setOxmList(OFOxmList oxmList);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMessage.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMessage.java
new file mode 100644
index 0000000..9a9d6f4
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMessage.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMessage extends OFObject {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFMessage build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeter.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeter.java
new file mode 100644
index 0000000..20b4e47
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeter.java
@@ -0,0 +1,32 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFMeter {
+     MAX,
+     SLOWPATH,
+     CONTROLLER,
+     ALL;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterBandStats.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterBandStats.java
new file mode 100644
index 0000000..32adcc0
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterBandStats.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMeterBandStats extends OFObject {
+    U64 getPacketBandCount();
+    U64 getByteBandCount();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFMeterBandStats build();
+        U64 getPacketBandCount();
+        Builder setPacketBandCount(U64 packetBandCount);
+        U64 getByteBandCount();
+        Builder setByteBandCount(U64 byteBandCount);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterBandType.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterBandType.java
new file mode 100644
index 0000000..ac61fb2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterBandType.java
@@ -0,0 +1,31 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFMeterBandType {
+     DROP,
+     DSCP_REMARK,
+     EXPERIMENTER;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterConfig.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterConfig.java
new file mode 100644
index 0000000..5cd55b3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterConfig.java
@@ -0,0 +1,48 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMeterConfig extends OFObject {
+    int getFlags();
+    long getMeterId();
+    List<OFMeterBand> getEntries();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFMeterConfig build();
+        int getFlags();
+        Builder setFlags(int flags);
+        long getMeterId();
+        Builder setMeterId(long meterId);
+        List<OFMeterBand> getEntries();
+        Builder setEntries(List<OFMeterBand> entries);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterConfigStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterConfigStatsReply.java
new file mode 100644
index 0000000..b80c158
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterConfigStatsReply.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMeterConfigStatsReply extends OFObject, OFStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    List<OFMeterBand> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsReply.Builder {
+        OFMeterConfigStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        List<OFMeterBand> getEntries();
+        Builder setEntries(List<OFMeterBand> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterConfigStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterConfigStatsRequest.java
new file mode 100644
index 0000000..6ab1828
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterConfigStatsRequest.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMeterConfigStatsRequest extends OFObject, OFStatsRequest<OFMeterConfigStatsReply>, OFRequest<OFMeterConfigStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getMeterId();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsRequest.Builder<OFMeterConfigStatsReply> {
+        OFMeterConfigStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        long getMeterId();
+        Builder setMeterId(long meterId);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterFeatures.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterFeatures.java
new file mode 100644
index 0000000..4108de3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterFeatures.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMeterFeatures extends OFObject {
+    long getMaxMeter();
+    long getBandTypes();
+    long getCapabilities();
+    short getMaxBands();
+    short getMaxColor();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFMeterFeatures build();
+        long getMaxMeter();
+        Builder setMaxMeter(long maxMeter);
+        long getBandTypes();
+        Builder setBandTypes(long bandTypes);
+        long getCapabilities();
+        Builder setCapabilities(long capabilities);
+        short getMaxBands();
+        Builder setMaxBands(short maxBands);
+        short getMaxColor();
+        Builder setMaxColor(short maxColor);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterFeaturesStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterFeaturesStatsReply.java
new file mode 100644
index 0000000..be19e8d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterFeaturesStatsReply.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMeterFeaturesStatsReply extends OFObject, OFStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    OFMeterFeatures getFeatures();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsReply.Builder {
+        OFMeterFeaturesStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        OFMeterFeatures getFeatures();
+        Builder setFeatures(OFMeterFeatures features);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterFeaturesStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterFeaturesStatsRequest.java
new file mode 100644
index 0000000..b239a22
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterFeaturesStatsRequest.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMeterFeaturesStatsRequest extends OFObject, OFStatsRequest<OFMeterFeaturesStatsReply>, OFRequest<OFMeterFeaturesStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsRequest.Builder<OFMeterFeaturesStatsReply> {
+        OFMeterFeaturesStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterFlags.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterFlags.java
new file mode 100644
index 0000000..2df9c70
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterFlags.java
@@ -0,0 +1,32 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFMeterFlags {
+     KBPS,
+     PKTPS,
+     BURST,
+     STATS;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterMod.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterMod.java
new file mode 100644
index 0000000..b01f37c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterMod.java
@@ -0,0 +1,56 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMeterMod extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    int getCommand();
+    int getFlags();
+    long getMeterId();
+    List<OFMeterBand> getMeters();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFMeterMod build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        int getCommand();
+        Builder setCommand(int command);
+        int getFlags();
+        Builder setFlags(int flags);
+        long getMeterId();
+        Builder setMeterId(long meterId);
+        List<OFMeterBand> getMeters();
+        Builder setMeters(List<OFMeterBand> meters);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterModCommand.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterModCommand.java
new file mode 100644
index 0000000..31bbe23
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterModCommand.java
@@ -0,0 +1,31 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFMeterModCommand {
+     ADD,
+     MODIFY,
+     DELETE;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterModFailedCode.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterModFailedCode.java
new file mode 100644
index 0000000..b977cc3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterModFailedCode.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFMeterModFailedCode {
+     UNKNOWN,
+     METER_EXISTS,
+     INVALID_METER,
+     UNKNOWN_METER,
+     BAD_COMMAND,
+     BAD_FLAGS,
+     BAD_RATE,
+     BAD_BURST,
+     BAD_BAND,
+     BAD_BAND_VALUE,
+     OUT_OF_METERS,
+     OUT_OF_BANDS;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterStats.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterStats.java
new file mode 100644
index 0000000..a5310eb
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterStats.java
@@ -0,0 +1,60 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMeterStats extends OFObject {
+    long getMeterId();
+    long getFlowCount();
+    U64 getPacketInCount();
+    U64 getByteInCount();
+    long getDurationSec();
+    long getDurationNsec();
+    List<OFMeterBandStats> getBandStats();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFMeterStats build();
+        long getMeterId();
+        Builder setMeterId(long meterId);
+        long getFlowCount();
+        Builder setFlowCount(long flowCount);
+        U64 getPacketInCount();
+        Builder setPacketInCount(U64 packetInCount);
+        U64 getByteInCount();
+        Builder setByteInCount(U64 byteInCount);
+        long getDurationSec();
+        Builder setDurationSec(long durationSec);
+        long getDurationNsec();
+        Builder setDurationNsec(long durationNsec);
+        List<OFMeterBandStats> getBandStats();
+        Builder setBandStats(List<OFMeterBandStats> bandStats);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterStatsReply.java
new file mode 100644
index 0000000..7795fae
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterStatsReply.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMeterStatsReply extends OFObject, OFStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    List<OFMeterStats> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsReply.Builder {
+        OFMeterStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        List<OFMeterStats> getEntries();
+        Builder setEntries(List<OFMeterStats> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterStatsRequest.java
new file mode 100644
index 0000000..f48fb64
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFMeterStatsRequest.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMeterStatsRequest extends OFObject, OFStatsRequest<OFMeterStatsReply>, OFRequest<OFMeterStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    long getMeterId();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsRequest.Builder<OFMeterStatsReply> {
+        OFMeterStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        long getMeterId();
+        Builder setMeterId(long meterId);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFNiciraControllerRole.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFNiciraControllerRole.java
new file mode 100644
index 0000000..e3babe3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFNiciraControllerRole.java
@@ -0,0 +1,31 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFNiciraControllerRole {
+     ROLE_OTHER,
+     ROLE_MASTER,
+     ROLE_SLAVE;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFNiciraControllerRoleReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFNiciraControllerRoleReply.java
new file mode 100644
index 0000000..5ec1cb4
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFNiciraControllerRoleReply.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFNiciraControllerRoleReply extends OFObject, OFNiciraHeader {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    OFNiciraControllerRole getRole();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFNiciraHeader.Builder {
+        OFNiciraControllerRoleReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        OFNiciraControllerRole getRole();
+        Builder setRole(OFNiciraControllerRole role);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFNiciraControllerRoleRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFNiciraControllerRoleRequest.java
new file mode 100644
index 0000000..002980c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFNiciraControllerRoleRequest.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFNiciraControllerRoleRequest extends OFObject, OFNiciraHeader, OFRequest<OFNiciraControllerRoleReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+    OFNiciraControllerRole getRole();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFNiciraHeader.Builder {
+        OFNiciraControllerRoleRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+        OFNiciraControllerRole getRole();
+        Builder setRole(OFNiciraControllerRole role);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFNiciraHeader.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFNiciraHeader.java
new file mode 100644
index 0000000..9be1c52
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFNiciraHeader.java
@@ -0,0 +1,47 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFNiciraHeader extends OFObject, OFExperimenter {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    long getExperimenter();
+    long getSubtype();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFExperimenter.Builder {
+        OFNiciraHeader build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        long getExperimenter();
+        long getSubtype();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFOxmClass.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFOxmClass.java
new file mode 100644
index 0000000..005b0e9
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFOxmClass.java
@@ -0,0 +1,32 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFOxmClass {
+     NXM_0,
+     NXM_1,
+     OPENFLOW_BASIC,
+     EXPERIMENTER;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPacketIn.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPacketIn.java
new file mode 100644
index 0000000..f1b1297
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPacketIn.java
@@ -0,0 +1,70 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFPacketIn extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFBufferId getBufferId();
+    int getTotalLen();
+    OFPacketInReason getReason();
+    TableId getTableId() throws UnsupportedOperationException;
+    Match getMatch() throws UnsupportedOperationException;
+    byte[] getData();
+    OFPort getInPort() throws UnsupportedOperationException;
+    OFPort getInPhyPort() throws UnsupportedOperationException;
+    U64 getCookie() throws UnsupportedOperationException;
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFPacketIn build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFBufferId getBufferId();
+        Builder setBufferId(OFBufferId bufferId);
+        int getTotalLen();
+        Builder setTotalLen(int totalLen);
+        OFPacketInReason getReason();
+        Builder setReason(OFPacketInReason reason);
+        TableId getTableId() throws UnsupportedOperationException;
+        Builder setTableId(TableId tableId) throws UnsupportedOperationException;
+        Match getMatch() throws UnsupportedOperationException;
+        Builder setMatch(Match match) throws UnsupportedOperationException;
+        byte[] getData();
+        Builder setData(byte[] data);
+        OFPort getInPort() throws UnsupportedOperationException;
+        Builder setInPort(OFPort inPort) throws UnsupportedOperationException;
+        OFPort getInPhyPort() throws UnsupportedOperationException;
+        Builder setInPhyPort(OFPort inPhyPort) throws UnsupportedOperationException;
+        U64 getCookie() throws UnsupportedOperationException;
+        Builder setCookie(U64 cookie) throws UnsupportedOperationException;
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPacketInReason.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPacketInReason.java
new file mode 100644
index 0000000..f13fb3c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPacketInReason.java
@@ -0,0 +1,45 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFPacketInReason {
+     NO_MATCH,
+     ACTION,
+     INVALID_TTL,
+     BSN_NEW_HOST,
+     BSN_STATION_MOVE,
+     BSN_BAD_VLAN,
+     BSN_DESTINATION_LOOKUP_FAILURE,
+     BSN_NO_ROUTE,
+     BSN_ICMP_ECHO_REQUEST,
+     BSN_DEST_NETWORK_UNREACHABLE,
+     BSN_DEST_HOST_UNREACHABLE,
+     BSN_DEST_PORT_UNREACHABLE,
+     BSN_FRAGMENTATION_REQUIRED,
+     BSN_ARP,
+     BSN_DHCP,
+     BSN_DEBUG,
+     BSN_PACKET_OF_DEATH;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPacketOut.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPacketOut.java
new file mode 100644
index 0000000..e17516d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPacketOut.java
@@ -0,0 +1,56 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFPacketOut extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFBufferId getBufferId();
+    OFPort getInPort();
+    List<OFAction> getActions();
+    byte[] getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFPacketOut build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFBufferId getBufferId();
+        Builder setBufferId(OFBufferId bufferId);
+        OFPort getInPort();
+        Builder setInPort(OFPort inPort);
+        List<OFAction> getActions();
+        Builder setActions(List<OFAction> actions);
+        byte[] getData();
+        Builder setData(byte[] data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPacketQueue.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPacketQueue.java
new file mode 100644
index 0000000..33d6521
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPacketQueue.java
@@ -0,0 +1,48 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFPacketQueue extends OFObject {
+    long getQueueId();
+    OFPort getPort() throws UnsupportedOperationException;
+    List<OFQueueProp> getProperties();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFPacketQueue build();
+        long getQueueId();
+        Builder setQueueId(long queueId);
+        OFPort getPort() throws UnsupportedOperationException;
+        Builder setPort(OFPort port) throws UnsupportedOperationException;
+        List<OFQueueProp> getProperties();
+        Builder setProperties(List<OFQueueProp> properties);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortConfig.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortConfig.java
new file mode 100644
index 0000000..5201415
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortConfig.java
@@ -0,0 +1,36 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFPortConfig {
+     PORT_DOWN,
+     NO_STP,
+     NO_RECV,
+     NO_RECV_STP,
+     NO_FLOOD,
+     NO_FWD,
+     NO_PACKET_IN,
+     BSN_MIRROR_DEST;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortDesc.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortDesc.java
new file mode 100644
index 0000000..4e2d85a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortDesc.java
@@ -0,0 +1,72 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFPortDesc extends OFObject {
+    OFPort getPortNo();
+    MacAddress getHwAddr();
+    String getName();
+    Set<OFPortConfig> getConfig();
+    Set<OFPortState> getState();
+    Set<OFPortFeatures> getCurr();
+    Set<OFPortFeatures> getAdvertised();
+    Set<OFPortFeatures> getSupported();
+    Set<OFPortFeatures> getPeer();
+    long getCurrSpeed() throws UnsupportedOperationException;
+    long getMaxSpeed() throws UnsupportedOperationException;
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFPortDesc build();
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+        MacAddress getHwAddr();
+        Builder setHwAddr(MacAddress hwAddr);
+        String getName();
+        Builder setName(String name);
+        Set<OFPortConfig> getConfig();
+        Builder setConfig(Set<OFPortConfig> config);
+        Set<OFPortState> getState();
+        Builder setState(Set<OFPortState> state);
+        Set<OFPortFeatures> getCurr();
+        Builder setCurr(Set<OFPortFeatures> curr);
+        Set<OFPortFeatures> getAdvertised();
+        Builder setAdvertised(Set<OFPortFeatures> advertised);
+        Set<OFPortFeatures> getSupported();
+        Builder setSupported(Set<OFPortFeatures> supported);
+        Set<OFPortFeatures> getPeer();
+        Builder setPeer(Set<OFPortFeatures> peer);
+        long getCurrSpeed() throws UnsupportedOperationException;
+        Builder setCurrSpeed(long currSpeed) throws UnsupportedOperationException;
+        long getMaxSpeed() throws UnsupportedOperationException;
+        Builder setMaxSpeed(long maxSpeed) throws UnsupportedOperationException;
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortDescStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortDescStatsReply.java
new file mode 100644
index 0000000..c445c24
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortDescStatsReply.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFPortDescStatsReply extends OFObject, OFStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    List<OFPortDesc> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsReply.Builder {
+        OFPortDescStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        List<OFPortDesc> getEntries();
+        Builder setEntries(List<OFPortDesc> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortDescStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortDescStatsRequest.java
new file mode 100644
index 0000000..418e612
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortDescStatsRequest.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFPortDescStatsRequest extends OFObject, OFStatsRequest<OFPortDescStatsReply>, OFRequest<OFPortDescStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsRequest.Builder<OFPortDescStatsReply> {
+        OFPortDescStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortFeatures.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortFeatures.java
new file mode 100644
index 0000000..fd33a69
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortFeatures.java
@@ -0,0 +1,54 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFPortFeatures {
+     PF_10MB_HD(PortSpeed.SPEED_10MB),
+     PF_10MB_FD(PortSpeed.SPEED_10MB),
+     PF_100MB_HD(PortSpeed.SPEED_100MB),
+     PF_100MB_FD(PortSpeed.SPEED_100MB),
+     PF_1GB_HD(PortSpeed.SPEED_1GB),
+     PF_1GB_FD(PortSpeed.SPEED_1GB),
+     PF_10GB_FD(PortSpeed.SPEED_10GB),
+     PF_COPPER(PortSpeed.SPEED_NONE),
+     PF_FIBER(PortSpeed.SPEED_NONE),
+     PF_AUTONEG(PortSpeed.SPEED_NONE),
+     PF_PAUSE(PortSpeed.SPEED_NONE),
+     PF_PAUSE_ASYM(PortSpeed.SPEED_NONE),
+     PF_40GB_FD(PortSpeed.SPEED_40GB),
+     PF_100GB_FD(PortSpeed.SPEED_100GB),
+     PF_1TB_FD(PortSpeed.SPEED_1TB),
+     PF_OTHER(PortSpeed.SPEED_NONE);
+
+     private final PortSpeed portSpeed;
+
+     private OFPortFeatures(PortSpeed portSpeed) {
+        this.portSpeed = portSpeed;
+     }
+
+     public PortSpeed getPortSpeed() {
+         return portSpeed;
+     }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortMod.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortMod.java
new file mode 100644
index 0000000..5c81061
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortMod.java
@@ -0,0 +1,58 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFPortMod extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFPort getPortNo();
+    MacAddress getHwAddr();
+    long getConfig();
+    long getMask();
+    long getAdvertise();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFPortMod build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+        MacAddress getHwAddr();
+        Builder setHwAddr(MacAddress hwAddr);
+        long getConfig();
+        Builder setConfig(long config);
+        long getMask();
+        Builder setMask(long mask);
+        long getAdvertise();
+        Builder setAdvertise(long advertise);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortModFailedCode.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortModFailedCode.java
new file mode 100644
index 0000000..e43b52c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortModFailedCode.java
@@ -0,0 +1,33 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFPortModFailedCode {
+     BAD_PORT,
+     BAD_HW_ADDR,
+     BAD_CONFIG,
+     BAD_ADVERTISE,
+     EPERM;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortReason.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortReason.java
new file mode 100644
index 0000000..2e75baa
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortReason.java
@@ -0,0 +1,31 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFPortReason {
+     ADD,
+     DELETE,
+     MODIFY;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortState.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortState.java
new file mode 100644
index 0000000..40d1c6b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortState.java
@@ -0,0 +1,46 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFPortState {
+     LINK_DOWN(false),
+     STP_LISTEN(true),
+     STP_LEARN(true),
+     STP_FORWARD(true),
+     STP_BLOCK(true),
+     STP_MASK(true),
+     BLOCKED(false),
+     LIVE(false);
+
+     private final boolean stpState;
+
+     private OFPortState(boolean stpState) {
+        this.stpState = stpState;
+     }
+
+     public boolean isStpState() {
+         return stpState;
+     }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortStatsEntry.java
new file mode 100644
index 0000000..fd844f9
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortStatsEntry.java
@@ -0,0 +1,83 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFPortStatsEntry extends OFObject {
+    OFPort getPortNo();
+    U64 getRxPackets();
+    U64 getTxPackets();
+    U64 getRxBytes();
+    U64 getTxBytes();
+    U64 getRxDropped();
+    U64 getTxDropped();
+    U64 getRxErrors();
+    U64 getTxErrors();
+    U64 getRxFrameErr();
+    U64 getRxOverErr();
+    U64 getRxCrcErr();
+    U64 getCollisions();
+    long getDurationSec() throws UnsupportedOperationException;
+    long getDurationNsec() throws UnsupportedOperationException;
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFPortStatsEntry build();
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+        U64 getRxPackets();
+        Builder setRxPackets(U64 rxPackets);
+        U64 getTxPackets();
+        Builder setTxPackets(U64 txPackets);
+        U64 getRxBytes();
+        Builder setRxBytes(U64 rxBytes);
+        U64 getTxBytes();
+        Builder setTxBytes(U64 txBytes);
+        U64 getRxDropped();
+        Builder setRxDropped(U64 rxDropped);
+        U64 getTxDropped();
+        Builder setTxDropped(U64 txDropped);
+        U64 getRxErrors();
+        Builder setRxErrors(U64 rxErrors);
+        U64 getTxErrors();
+        Builder setTxErrors(U64 txErrors);
+        U64 getRxFrameErr();
+        Builder setRxFrameErr(U64 rxFrameErr);
+        U64 getRxOverErr();
+        Builder setRxOverErr(U64 rxOverErr);
+        U64 getRxCrcErr();
+        Builder setRxCrcErr(U64 rxCrcErr);
+        U64 getCollisions();
+        Builder setCollisions(U64 collisions);
+        long getDurationSec() throws UnsupportedOperationException;
+        Builder setDurationSec(long durationSec) throws UnsupportedOperationException;
+        long getDurationNsec() throws UnsupportedOperationException;
+        Builder setDurationNsec(long durationNsec) throws UnsupportedOperationException;
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortStatsReply.java
new file mode 100644
index 0000000..90e0c31
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortStatsReply.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFPortStatsReply extends OFObject, OFStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    List<OFPortStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsReply.Builder {
+        OFPortStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        List<OFPortStatsEntry> getEntries();
+        Builder setEntries(List<OFPortStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortStatsRequest.java
new file mode 100644
index 0000000..2bbdf93
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortStatsRequest.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFPortStatsRequest extends OFObject, OFStatsRequest<OFPortStatsReply>, OFRequest<OFPortStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    OFPort getPortNo();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsRequest.Builder<OFPortStatsReply> {
+        OFPortStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortStatus.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortStatus.java
new file mode 100644
index 0000000..e7bee5b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFPortStatus.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFPortStatus extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFPortReason getReason();
+    OFPortDesc getDesc();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFPortStatus build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFPortReason getReason();
+        Builder setReason(OFPortReason reason);
+        OFPortDesc getDesc();
+        Builder setDesc(OFPortDesc desc);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueGetConfigReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueGetConfigReply.java
new file mode 100644
index 0000000..d31aab4
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueGetConfigReply.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFQueueGetConfigReply extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFPort getPort();
+    List<OFPacketQueue> getQueues();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFQueueGetConfigReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFPort getPort();
+        Builder setPort(OFPort port);
+        List<OFPacketQueue> getQueues();
+        Builder setQueues(List<OFPacketQueue> queues);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueGetConfigRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueGetConfigRequest.java
new file mode 100644
index 0000000..cddc9f0
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueGetConfigRequest.java
@@ -0,0 +1,46 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFQueueGetConfigRequest extends OFObject, OFMessage, OFRequest<OFQueueGetConfigReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFPort getPort();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFQueueGetConfigRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFPort getPort();
+        Builder setPort(OFPort port);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueOpFailedCode.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueOpFailedCode.java
new file mode 100644
index 0000000..21549e2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueOpFailedCode.java
@@ -0,0 +1,31 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFQueueOpFailedCode {
+     BAD_PORT,
+     BAD_QUEUE,
+     EPERM;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueProperties.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueProperties.java
new file mode 100644
index 0000000..a5a11fc
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueProperties.java
@@ -0,0 +1,32 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFQueueProperties {
+     NONE,
+     MIN_RATE,
+     MAX_RATE,
+     EXPERIMENTER;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueStatsEntry.java
new file mode 100644
index 0000000..4f04ad8
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueStatsEntry.java
@@ -0,0 +1,59 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFQueueStatsEntry extends OFObject {
+    OFPort getPortNo();
+    long getQueueId();
+    U64 getTxBytes();
+    U64 getTxPackets();
+    U64 getTxErrors();
+    long getDurationSec() throws UnsupportedOperationException;
+    long getDurationNsec() throws UnsupportedOperationException;
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFQueueStatsEntry build();
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+        long getQueueId();
+        Builder setQueueId(long queueId);
+        U64 getTxBytes();
+        Builder setTxBytes(U64 txBytes);
+        U64 getTxPackets();
+        Builder setTxPackets(U64 txPackets);
+        U64 getTxErrors();
+        Builder setTxErrors(U64 txErrors);
+        long getDurationSec() throws UnsupportedOperationException;
+        Builder setDurationSec(long durationSec) throws UnsupportedOperationException;
+        long getDurationNsec() throws UnsupportedOperationException;
+        Builder setDurationNsec(long durationNsec) throws UnsupportedOperationException;
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueStatsReply.java
new file mode 100644
index 0000000..efeb67d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueStatsReply.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFQueueStatsReply extends OFObject, OFStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    List<OFQueueStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsReply.Builder {
+        OFQueueStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        List<OFQueueStatsEntry> getEntries();
+        Builder setEntries(List<OFQueueStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueStatsRequest.java
new file mode 100644
index 0000000..3101abe
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFQueueStatsRequest.java
@@ -0,0 +1,55 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFQueueStatsRequest extends OFObject, OFStatsRequest<OFQueueStatsReply>, OFRequest<OFQueueStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    OFPort getPortNo();
+    long getQueueId();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsRequest.Builder<OFQueueStatsReply> {
+        OFQueueStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        OFPort getPortNo();
+        Builder setPortNo(OFPort portNo);
+        long getQueueId();
+        Builder setQueueId(long queueId);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFRoleReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFRoleReply.java
new file mode 100644
index 0000000..2b3a992
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFRoleReply.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFRoleReply extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFControllerRole getRole();
+    U64 getGenerationId();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFRoleReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFControllerRole getRole();
+        Builder setRole(OFControllerRole role);
+        U64 getGenerationId();
+        Builder setGenerationId(U64 generationId);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFRoleRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFRoleRequest.java
new file mode 100644
index 0000000..15bae7e
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFRoleRequest.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFRoleRequest extends OFObject, OFMessage, OFRequest<OFRoleReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFControllerRole getRole();
+    U64 getGenerationId();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFRoleRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFControllerRole getRole();
+        Builder setRole(OFControllerRole role);
+        U64 getGenerationId();
+        Builder setGenerationId(U64 generationId);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFRoleRequestFailedCode.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFRoleRequestFailedCode.java
new file mode 100644
index 0000000..19793ec
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFRoleRequestFailedCode.java
@@ -0,0 +1,31 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFRoleRequestFailedCode {
+     STALE,
+     UNSUP,
+     BAD_ROLE;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFSetConfig.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFSetConfig.java
new file mode 100644
index 0000000..2caf3f4
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFSetConfig.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFSetConfig extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    Set<OFConfigFlags> getFlags();
+    int getMissSendLen();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFSetConfig build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        Set<OFConfigFlags> getFlags();
+        Builder setFlags(Set<OFConfigFlags> flags);
+        int getMissSendLen();
+        Builder setMissSendLen(int missSendLen);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFStatsReply.java
new file mode 100644
index 0000000..504180a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFStatsReply.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFStatsReply extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFStatsReplyFlags.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFStatsReplyFlags.java
new file mode 100644
index 0000000..e521381
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFStatsReplyFlags.java
@@ -0,0 +1,29 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFStatsReplyFlags {
+     REPLY_MORE;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFStatsRequest.java
new file mode 100644
index 0000000..94ea80b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFStatsRequest.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFStatsRequest<T extends OFStatsReply> extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder<T> createBuilder();
+    public interface Builder<T extends OFStatsReply> extends OFMessage.Builder {
+        OFStatsRequest<T> build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder<T> setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder<T> setFlags(Set<OFStatsRequestFlags> flags);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFStatsRequestFlags.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFStatsRequestFlags.java
new file mode 100644
index 0000000..80ba542
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFStatsRequestFlags.java
@@ -0,0 +1,29 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFStatsRequestFlags {
+     REQ_MORE;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFStatsType.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFStatsType.java
new file mode 100644
index 0000000..fee8757
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFStatsType.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFStatsType {
+     DESC,
+     FLOW,
+     AGGREGATE,
+     TABLE,
+     PORT,
+     QUEUE,
+     EXPERIMENTER,
+     GROUP,
+     GROUP_DESC,
+     GROUP_FEATURES,
+     METER,
+     METER_CONFIG,
+     METER_FEATURES,
+     TABLE_FEATURES,
+     PORT_DESC;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFSwitchConfigFailedCode.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFSwitchConfigFailedCode.java
new file mode 100644
index 0000000..646ce00
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFSwitchConfigFailedCode.java
@@ -0,0 +1,31 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFSwitchConfigFailedCode {
+     BAD_FLAGS,
+     BAD_LEN,
+     EPERM;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTable.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTable.java
new file mode 100644
index 0000000..301ce93
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTable.java
@@ -0,0 +1,30 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFTable {
+     MAX,
+     ALL;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableConfig.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableConfig.java
new file mode 100644
index 0000000..d620606
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableConfig.java
@@ -0,0 +1,33 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFTableConfig {
+     TABLE_MISS_CONTROLLER,
+     TABLE_MISS_CONTINUE,
+     TABLE_MISS_DROP,
+     TABLE_MISS_MASK,
+     DEPRECATED_MASK;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeatureProp.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeatureProp.java
new file mode 100644
index 0000000..4df78c2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeatureProp.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeatureProp extends OFObject {
+    int getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFTableFeatureProp build();
+        int getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropApplyActions.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropApplyActions.java
new file mode 100644
index 0000000..35ac87a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropApplyActions.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturePropApplyActions extends OFObject, OFTableFeatureProp {
+    int getType();
+    List<OFActionId> getActionIds();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFTableFeatureProp.Builder {
+        OFTableFeaturePropApplyActions build();
+        int getType();
+        List<OFActionId> getActionIds();
+        Builder setActionIds(List<OFActionId> actionIds);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropApplyActionsMiss.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropApplyActionsMiss.java
new file mode 100644
index 0000000..00dff4d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropApplyActionsMiss.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturePropApplyActionsMiss extends OFObject, OFTableFeatureProp {
+    int getType();
+    List<OFActionId> getActionIds();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFTableFeatureProp.Builder {
+        OFTableFeaturePropApplyActionsMiss build();
+        int getType();
+        List<OFActionId> getActionIds();
+        Builder setActionIds(List<OFActionId> actionIds);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropApplySetfield.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropApplySetfield.java
new file mode 100644
index 0000000..2fc37f7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropApplySetfield.java
@@ -0,0 +1,45 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturePropApplySetfield extends OFObject, OFTableFeatureProp {
+    int getType();
+    List<U32> getOxmIds();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFTableFeatureProp.Builder {
+        OFTableFeaturePropApplySetfield build();
+        int getType();
+        List<U32> getOxmIds();
+        Builder setOxmIds(List<U32> oxmIds);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropApplySetfieldMiss.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropApplySetfieldMiss.java
new file mode 100644
index 0000000..a1208be
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropApplySetfieldMiss.java
@@ -0,0 +1,45 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturePropApplySetfieldMiss extends OFObject, OFTableFeatureProp {
+    int getType();
+    List<U32> getOxmIds();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFTableFeatureProp.Builder {
+        OFTableFeaturePropApplySetfieldMiss build();
+        int getType();
+        List<U32> getOxmIds();
+        Builder setOxmIds(List<U32> oxmIds);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropExperimenter.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropExperimenter.java
new file mode 100644
index 0000000..2b80219
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropExperimenter.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturePropExperimenter extends OFObject, OFTableFeatureProp {
+    int getType();
+    long getExperimenter();
+    long getSubtype();
+    byte[] getExperimenterData();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFTableFeatureProp.Builder {
+        OFTableFeaturePropExperimenter build();
+        int getType();
+        long getExperimenter();
+        Builder setExperimenter(long experimenter);
+        long getSubtype();
+        Builder setSubtype(long subtype);
+        byte[] getExperimenterData();
+        Builder setExperimenterData(byte[] experimenterData);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropExperimenterMiss.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropExperimenterMiss.java
new file mode 100644
index 0000000..74a2040
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropExperimenterMiss.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturePropExperimenterMiss extends OFObject, OFTableFeatureProp {
+    int getType();
+    long getExperimenter();
+    long getSubtype();
+    byte[] getExperimenterData();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFTableFeatureProp.Builder {
+        OFTableFeaturePropExperimenterMiss build();
+        int getType();
+        long getExperimenter();
+        Builder setExperimenter(long experimenter);
+        long getSubtype();
+        Builder setSubtype(long subtype);
+        byte[] getExperimenterData();
+        Builder setExperimenterData(byte[] experimenterData);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropInstructions.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropInstructions.java
new file mode 100644
index 0000000..43d489f
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropInstructions.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturePropInstructions extends OFObject, OFTableFeatureProp {
+    int getType();
+    List<OFInstructionId> getInstructionIds();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFTableFeatureProp.Builder {
+        OFTableFeaturePropInstructions build();
+        int getType();
+        List<OFInstructionId> getInstructionIds();
+        Builder setInstructionIds(List<OFInstructionId> instructionIds);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropInstructionsMiss.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropInstructionsMiss.java
new file mode 100644
index 0000000..edd4684
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropInstructionsMiss.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturePropInstructionsMiss extends OFObject, OFTableFeatureProp {
+    int getType();
+    List<OFInstructionId> getInstructionIds();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFTableFeatureProp.Builder {
+        OFTableFeaturePropInstructionsMiss build();
+        int getType();
+        List<OFInstructionId> getInstructionIds();
+        Builder setInstructionIds(List<OFInstructionId> instructionIds);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropMatch.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropMatch.java
new file mode 100644
index 0000000..a065105
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropMatch.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturePropMatch extends OFObject, OFTableFeatureProp {
+    int getType();
+    List<U32> getOxmIds();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFTableFeatureProp.Builder {
+        OFTableFeaturePropMatch build();
+        int getType();
+        List<U32> getOxmIds();
+        Builder setOxmIds(List<U32> oxmIds);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropNextTables.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropNextTables.java
new file mode 100644
index 0000000..ec3dc29
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropNextTables.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturePropNextTables extends OFObject, OFTableFeatureProp {
+    int getType();
+    List<U8> getNextTableIds();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFTableFeatureProp.Builder {
+        OFTableFeaturePropNextTables build();
+        int getType();
+        List<U8> getNextTableIds();
+        Builder setNextTableIds(List<U8> nextTableIds);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropNextTablesMiss.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropNextTablesMiss.java
new file mode 100644
index 0000000..d9c5911
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropNextTablesMiss.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturePropNextTablesMiss extends OFObject, OFTableFeatureProp {
+    int getType();
+    List<U8> getNextTableIds();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFTableFeatureProp.Builder {
+        OFTableFeaturePropNextTablesMiss build();
+        int getType();
+        List<U8> getNextTableIds();
+        Builder setNextTableIds(List<U8> nextTableIds);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropType.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropType.java
new file mode 100644
index 0000000..36691ee
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropType.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFTableFeaturePropType {
+     INSTRUCTIONS,
+     INSTRUCTIONS_MISS,
+     NEXT_TABLES,
+     NEXT_TABLES_MISS,
+     WRITE_ACTIONS,
+     WRITE_ACTIONS_MISS,
+     APPLY_ACTIONS,
+     APPLY_ACTIONS_MISS,
+     MATCH,
+     WILDCARDS,
+     WRITE_SETFIELD,
+     WRITE_SETFIELD_MISS,
+     APPLY_SETFIELD,
+     APPLY_SETFIELD_MISS,
+     EXPERIMENTER,
+     EXPERIMENTER_MISS;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropWildcards.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropWildcards.java
new file mode 100644
index 0000000..c513561
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropWildcards.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturePropWildcards extends OFObject, OFTableFeatureProp {
+    int getType();
+    List<U32> getOxmIds();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFTableFeatureProp.Builder {
+        OFTableFeaturePropWildcards build();
+        int getType();
+        List<U32> getOxmIds();
+        Builder setOxmIds(List<U32> oxmIds);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropWriteActions.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropWriteActions.java
new file mode 100644
index 0000000..9b7dec1
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropWriteActions.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturePropWriteActions extends OFObject, OFTableFeatureProp {
+    int getType();
+    List<OFActionId> getActionIds();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFTableFeatureProp.Builder {
+        OFTableFeaturePropWriteActions build();
+        int getType();
+        List<OFActionId> getActionIds();
+        Builder setActionIds(List<OFActionId> actionIds);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropWriteActionsMiss.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropWriteActionsMiss.java
new file mode 100644
index 0000000..e3deb3c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropWriteActionsMiss.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturePropWriteActionsMiss extends OFObject, OFTableFeatureProp {
+    int getType();
+    List<OFActionId> getActionIds();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFTableFeatureProp.Builder {
+        OFTableFeaturePropWriteActionsMiss build();
+        int getType();
+        List<OFActionId> getActionIds();
+        Builder setActionIds(List<OFActionId> actionIds);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropWriteSetfield.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropWriteSetfield.java
new file mode 100644
index 0000000..7b5811b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropWriteSetfield.java
@@ -0,0 +1,45 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturePropWriteSetfield extends OFObject, OFTableFeatureProp {
+    int getType();
+    List<U32> getOxmIds();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFTableFeatureProp.Builder {
+        OFTableFeaturePropWriteSetfield build();
+        int getType();
+        List<U32> getOxmIds();
+        Builder setOxmIds(List<U32> oxmIds);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropWriteSetfieldMiss.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropWriteSetfieldMiss.java
new file mode 100644
index 0000000..f68d90d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturePropWriteSetfieldMiss.java
@@ -0,0 +1,45 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturePropWriteSetfieldMiss extends OFObject, OFTableFeatureProp {
+    int getType();
+    List<U32> getOxmIds();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFTableFeatureProp.Builder {
+        OFTableFeaturePropWriteSetfieldMiss build();
+        int getType();
+        List<U32> getOxmIds();
+        Builder setOxmIds(List<U32> oxmIds);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeatures.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeatures.java
new file mode 100644
index 0000000..d74de81
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeatures.java
@@ -0,0 +1,60 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeatures extends OFObject {
+    TableId getTableId();
+    String getName();
+    U64 getMetadataMatch();
+    U64 getMetadataWrite();
+    long getConfig();
+    long getMaxEntries();
+    List<OFTableFeatureProp> getProperties();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFTableFeatures build();
+        TableId getTableId();
+        Builder setTableId(TableId tableId);
+        String getName();
+        Builder setName(String name);
+        U64 getMetadataMatch();
+        Builder setMetadataMatch(U64 metadataMatch);
+        U64 getMetadataWrite();
+        Builder setMetadataWrite(U64 metadataWrite);
+        long getConfig();
+        Builder setConfig(long config);
+        long getMaxEntries();
+        Builder setMaxEntries(long maxEntries);
+        List<OFTableFeatureProp> getProperties();
+        Builder setProperties(List<OFTableFeatureProp> properties);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturesFailedCode.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturesFailedCode.java
new file mode 100644
index 0000000..5703e53
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturesFailedCode.java
@@ -0,0 +1,34 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFTableFeaturesFailedCode {
+     BAD_TABLE,
+     BAD_METADATA,
+     BAD_TYPE,
+     BAD_LEN,
+     BAD_ARGUMENT,
+     EPERM;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturesStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturesStatsReply.java
new file mode 100644
index 0000000..10d48ff
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturesStatsReply.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturesStatsReply extends OFObject, OFStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    List<OFTableFeatures> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsReply.Builder {
+        OFTableFeaturesStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        List<OFTableFeatures> getEntries();
+        Builder setEntries(List<OFTableFeatures> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturesStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturesStatsRequest.java
new file mode 100644
index 0000000..00dc72d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableFeaturesStatsRequest.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturesStatsRequest extends OFObject, OFStatsRequest<OFTableFeaturesStatsReply>, OFRequest<OFTableFeaturesStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+    List<OFTableFeatures> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsRequest.Builder<OFTableFeaturesStatsReply> {
+        OFTableFeaturesStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+        List<OFTableFeatures> getEntries();
+        Builder setEntries(List<OFTableFeatures> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableMod.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableMod.java
new file mode 100644
index 0000000..be009c9
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableMod.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableMod extends OFObject, OFMessage {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    TableId getTableId();
+    long getConfig();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMessage.Builder {
+        OFTableMod build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        TableId getTableId();
+        Builder setTableId(TableId tableId);
+        long getConfig();
+        Builder setConfig(long config);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableModFailedCode.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableModFailedCode.java
new file mode 100644
index 0000000..6f81b11
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableModFailedCode.java
@@ -0,0 +1,31 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFTableModFailedCode {
+     BAD_TABLE,
+     BAD_CONFIG,
+     EPERM;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableStatsEntry.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableStatsEntry.java
new file mode 100644
index 0000000..ee02f19
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableStatsEntry.java
@@ -0,0 +1,87 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableStatsEntry extends OFObject {
+    TableId getTableId();
+    String getName() throws UnsupportedOperationException;
+    OFMatchBmap getMatch() throws UnsupportedOperationException;
+    int getWildcards() throws UnsupportedOperationException;
+    long getWriteActions() throws UnsupportedOperationException;
+    long getApplyActions() throws UnsupportedOperationException;
+    U64 getWriteSetfields() throws UnsupportedOperationException;
+    U64 getApplySetfields() throws UnsupportedOperationException;
+    U64 getMetadataMatch() throws UnsupportedOperationException;
+    U64 getMetadataWrite() throws UnsupportedOperationException;
+    long getInstructions() throws UnsupportedOperationException;
+    long getConfig() throws UnsupportedOperationException;
+    long getMaxEntries() throws UnsupportedOperationException;
+    long getActiveCount();
+    U64 getLookupCount();
+    U64 getMatchedCount();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFTableStatsEntry build();
+        TableId getTableId();
+        Builder setTableId(TableId tableId);
+        String getName() throws UnsupportedOperationException;
+        Builder setName(String name) throws UnsupportedOperationException;
+        OFMatchBmap getMatch() throws UnsupportedOperationException;
+        Builder setMatch(OFMatchBmap match) throws UnsupportedOperationException;
+        int getWildcards() throws UnsupportedOperationException;
+        Builder setWildcards(int wildcards) throws UnsupportedOperationException;
+        long getWriteActions() throws UnsupportedOperationException;
+        Builder setWriteActions(long writeActions) throws UnsupportedOperationException;
+        long getApplyActions() throws UnsupportedOperationException;
+        Builder setApplyActions(long applyActions) throws UnsupportedOperationException;
+        U64 getWriteSetfields() throws UnsupportedOperationException;
+        Builder setWriteSetfields(U64 writeSetfields) throws UnsupportedOperationException;
+        U64 getApplySetfields() throws UnsupportedOperationException;
+        Builder setApplySetfields(U64 applySetfields) throws UnsupportedOperationException;
+        U64 getMetadataMatch() throws UnsupportedOperationException;
+        Builder setMetadataMatch(U64 metadataMatch) throws UnsupportedOperationException;
+        U64 getMetadataWrite() throws UnsupportedOperationException;
+        Builder setMetadataWrite(U64 metadataWrite) throws UnsupportedOperationException;
+        long getInstructions() throws UnsupportedOperationException;
+        Builder setInstructions(long instructions) throws UnsupportedOperationException;
+        long getConfig() throws UnsupportedOperationException;
+        Builder setConfig(long config) throws UnsupportedOperationException;
+        long getMaxEntries() throws UnsupportedOperationException;
+        Builder setMaxEntries(long maxEntries) throws UnsupportedOperationException;
+        long getActiveCount();
+        Builder setActiveCount(long activeCount);
+        U64 getLookupCount();
+        Builder setLookupCount(U64 lookupCount);
+        U64 getMatchedCount();
+        Builder setMatchedCount(U64 matchedCount);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableStatsReply.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableStatsReply.java
new file mode 100644
index 0000000..e16d879
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableStatsReply.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableStatsReply extends OFObject, OFStatsReply {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsReplyFlags> getFlags();
+    List<OFTableStatsEntry> getEntries();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsReply.Builder {
+        OFTableStatsReply build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsReplyFlags> getFlags();
+        Builder setFlags(Set<OFStatsReplyFlags> flags);
+        List<OFTableStatsEntry> getEntries();
+        Builder setEntries(List<OFTableStatsEntry> entries);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableStatsRequest.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableStatsRequest.java
new file mode 100644
index 0000000..a9dff30
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFTableStatsRequest.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableStatsRequest extends OFObject, OFStatsRequest<OFTableStatsReply>, OFRequest<OFTableStatsReply> {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFStatsType getStatsType();
+    Set<OFStatsRequestFlags> getFlags();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFStatsRequest.Builder<OFTableStatsReply> {
+        OFTableStatsRequest build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFStatsType getStatsType();
+        Set<OFStatsRequestFlags> getFlags();
+        Builder setFlags(Set<OFStatsRequestFlags> flags);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFType.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFType.java
new file mode 100644
index 0000000..aef779f
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFType.java
@@ -0,0 +1,58 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public enum OFType {
+     HELLO,
+     ERROR,
+     ECHO_REQUEST,
+     ECHO_REPLY,
+     EXPERIMENTER,
+     FEATURES_REQUEST,
+     FEATURES_REPLY,
+     GET_CONFIG_REQUEST,
+     GET_CONFIG_REPLY,
+     SET_CONFIG,
+     PACKET_IN,
+     FLOW_REMOVED,
+     PORT_STATUS,
+     PACKET_OUT,
+     FLOW_MOD,
+     PORT_MOD,
+     STATS_REQUEST,
+     STATS_REPLY,
+     BARRIER_REQUEST,
+     BARRIER_REPLY,
+     QUEUE_GET_CONFIG_REQUEST,
+     QUEUE_GET_CONFIG_REPLY,
+     GROUP_MOD,
+     TABLE_MOD,
+     ROLE_REQUEST,
+     ROLE_REPLY,
+     GET_ASYNC_REQUEST,
+     GET_ASYNC_REPLY,
+     SET_ASYNC,
+     METER_MOD;
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFUint64.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFUint64.java
new file mode 100644
index 0000000..c9d5edd
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/OFUint64.java
@@ -0,0 +1,41 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFUint64 extends OFObject {
+    U64 getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFUint64 build();
+        U64 getValue();
+        Builder setValue(U64 value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFAction.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFAction.java
new file mode 100644
index 0000000..6a2f731
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFAction.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFAction extends OFObject {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFAction build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionBsn.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionBsn.java
new file mode 100644
index 0000000..c644ffd
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionBsn.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionBsn extends OFObject, OFActionExperimenter {
+    OFActionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionExperimenter.Builder {
+        OFActionBsn build();
+        OFActionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionBsnChecksum.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionBsnChecksum.java
new file mode 100644
index 0000000..e09c19c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionBsnChecksum.java
@@ -0,0 +1,47 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionBsnChecksum extends OFObject, OFActionBsn {
+    OFActionType getType();
+    long getExperimenter();
+    long getSubtype();
+    U128 getChecksum();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionBsn.Builder {
+        OFActionBsnChecksum build();
+        OFActionType getType();
+        long getExperimenter();
+        long getSubtype();
+        U128 getChecksum();
+        Builder setChecksum(U128 checksum);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionBsnMirror.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionBsnMirror.java
new file mode 100644
index 0000000..8b15cd2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionBsnMirror.java
@@ -0,0 +1,53 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionBsnMirror extends OFObject, OFActionBsn {
+    OFActionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFPort getDestPort();
+    long getVlanTag();
+    short getCopyStage();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionBsn.Builder {
+        OFActionBsnMirror build();
+        OFActionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFPort getDestPort();
+        Builder setDestPort(OFPort destPort);
+        long getVlanTag();
+        Builder setVlanTag(long vlanTag);
+        short getCopyStage();
+        Builder setCopyStage(short copyStage);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionBsnSetTunnelDst.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionBsnSetTunnelDst.java
new file mode 100644
index 0000000..24dbb3a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionBsnSetTunnelDst.java
@@ -0,0 +1,48 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionBsnSetTunnelDst extends OFObject, OFActionBsn {
+    OFActionType getType();
+    long getExperimenter();
+    long getSubtype();
+    long getDst();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionBsn.Builder {
+        OFActionBsnSetTunnelDst build();
+        OFActionType getType();
+        long getExperimenter();
+        long getSubtype();
+        long getDst();
+        Builder setDst(long dst);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionCopyTtlIn.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionCopyTtlIn.java
new file mode 100644
index 0000000..166d4a7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionCopyTtlIn.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionCopyTtlIn extends OFObject, OFAction {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionCopyTtlIn build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionCopyTtlOut.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionCopyTtlOut.java
new file mode 100644
index 0000000..d78e511
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionCopyTtlOut.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionCopyTtlOut extends OFObject, OFAction {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionCopyTtlOut build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionDecMplsTtl.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionDecMplsTtl.java
new file mode 100644
index 0000000..e855cf0
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionDecMplsTtl.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionDecMplsTtl extends OFObject, OFAction {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionDecMplsTtl build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionDecNwTtl.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionDecNwTtl.java
new file mode 100644
index 0000000..5dbec27
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionDecNwTtl.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionDecNwTtl extends OFObject, OFAction {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionDecNwTtl build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionEnqueue.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionEnqueue.java
new file mode 100644
index 0000000..11ab1a6
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionEnqueue.java
@@ -0,0 +1,46 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionEnqueue extends OFObject, OFAction {
+    OFActionType getType();
+    OFPort getPort();
+    long getQueueId();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionEnqueue build();
+        OFActionType getType();
+        OFPort getPort();
+        Builder setPort(OFPort port);
+        long getQueueId();
+        Builder setQueueId(long queueId);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionExperimenter.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionExperimenter.java
new file mode 100644
index 0000000..56d9ef9
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionExperimenter.java
@@ -0,0 +1,42 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionExperimenter extends OFObject, OFAction {
+    OFActionType getType();
+    long getExperimenter();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionExperimenter build();
+        OFActionType getType();
+        long getExperimenter();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionGroup.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionGroup.java
new file mode 100644
index 0000000..8d65fa8
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionGroup.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionGroup extends OFObject, OFAction {
+    OFActionType getType();
+    OFGroup getGroup();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionGroup build();
+        OFActionType getType();
+        OFGroup getGroup();
+        Builder setGroup(OFGroup group);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionNicira.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionNicira.java
new file mode 100644
index 0000000..aad3c35
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionNicira.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionNicira extends OFObject, OFActionExperimenter {
+    OFActionType getType();
+    long getExperimenter();
+    int getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionExperimenter.Builder {
+        OFActionNicira build();
+        OFActionType getType();
+        long getExperimenter();
+        int getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionNiciraDecTtl.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionNiciraDecTtl.java
new file mode 100644
index 0000000..55b81c9
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionNiciraDecTtl.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionNiciraDecTtl extends OFObject, OFActionNicira {
+    OFActionType getType();
+    long getExperimenter();
+    int getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionNicira.Builder {
+        OFActionNiciraDecTtl build();
+        OFActionType getType();
+        long getExperimenter();
+        int getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionOutput.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionOutput.java
new file mode 100644
index 0000000..b673a22
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionOutput.java
@@ -0,0 +1,46 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionOutput extends OFObject, OFAction {
+    OFActionType getType();
+    OFPort getPort();
+    int getMaxLen();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionOutput build();
+        OFActionType getType();
+        OFPort getPort();
+        Builder setPort(OFPort port);
+        int getMaxLen();
+        Builder setMaxLen(int maxLen);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPopMpls.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPopMpls.java
new file mode 100644
index 0000000..3067e2f
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPopMpls.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionPopMpls extends OFObject, OFAction {
+    OFActionType getType();
+    EthType getEthertype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionPopMpls build();
+        OFActionType getType();
+        EthType getEthertype();
+        Builder setEthertype(EthType ethertype);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPopPbb.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPopPbb.java
new file mode 100644
index 0000000..33934b6
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPopPbb.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionPopPbb extends OFObject, OFAction {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionPopPbb build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPopVlan.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPopVlan.java
new file mode 100644
index 0000000..998f7db
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPopVlan.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionPopVlan extends OFObject, OFAction {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionPopVlan build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPushMpls.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPushMpls.java
new file mode 100644
index 0000000..76b7da2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPushMpls.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionPushMpls extends OFObject, OFAction {
+    OFActionType getType();
+    EthType getEthertype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionPushMpls build();
+        OFActionType getType();
+        EthType getEthertype();
+        Builder setEthertype(EthType ethertype);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPushPbb.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPushPbb.java
new file mode 100644
index 0000000..0177569
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPushPbb.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionPushPbb extends OFObject, OFAction {
+    OFActionType getType();
+    EthType getEthertype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionPushPbb build();
+        OFActionType getType();
+        EthType getEthertype();
+        Builder setEthertype(EthType ethertype);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPushVlan.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPushVlan.java
new file mode 100644
index 0000000..e98513b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionPushVlan.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionPushVlan extends OFObject, OFAction {
+    OFActionType getType();
+    EthType getEthertype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionPushVlan build();
+        OFActionType getType();
+        EthType getEthertype();
+        Builder setEthertype(EthType ethertype);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetDlDst.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetDlDst.java
new file mode 100644
index 0000000..1897651
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetDlDst.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionSetDlDst extends OFObject, OFAction {
+    OFActionType getType();
+    MacAddress getDlAddr();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionSetDlDst build();
+        OFActionType getType();
+        MacAddress getDlAddr();
+        Builder setDlAddr(MacAddress dlAddr);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetDlSrc.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetDlSrc.java
new file mode 100644
index 0000000..8dcc7f5
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetDlSrc.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionSetDlSrc extends OFObject, OFAction {
+    OFActionType getType();
+    MacAddress getDlAddr();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionSetDlSrc build();
+        OFActionType getType();
+        MacAddress getDlAddr();
+        Builder setDlAddr(MacAddress dlAddr);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetField.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetField.java
new file mode 100644
index 0000000..25f91ce
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetField.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionSetField extends OFObject, OFAction {
+    OFActionType getType();
+    OFOxm<?> getField();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionSetField build();
+        OFActionType getType();
+        OFOxm<?> getField();
+        Builder setField(OFOxm<?> field);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetMplsLabel.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetMplsLabel.java
new file mode 100644
index 0000000..214d66b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetMplsLabel.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionSetMplsLabel extends OFObject, OFAction {
+    OFActionType getType();
+    long getMplsLabel();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionSetMplsLabel build();
+        OFActionType getType();
+        long getMplsLabel();
+        Builder setMplsLabel(long mplsLabel);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetMplsTc.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetMplsTc.java
new file mode 100644
index 0000000..6c43156
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetMplsTc.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionSetMplsTc extends OFObject, OFAction {
+    OFActionType getType();
+    short getMplsTc();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionSetMplsTc build();
+        OFActionType getType();
+        short getMplsTc();
+        Builder setMplsTc(short mplsTc);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetMplsTtl.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetMplsTtl.java
new file mode 100644
index 0000000..c8513c6
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetMplsTtl.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionSetMplsTtl extends OFObject, OFAction {
+    OFActionType getType();
+    short getMplsTtl();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionSetMplsTtl build();
+        OFActionType getType();
+        short getMplsTtl();
+        Builder setMplsTtl(short mplsTtl);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetNwDst.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetNwDst.java
new file mode 100644
index 0000000..539cd37
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetNwDst.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionSetNwDst extends OFObject, OFAction {
+    OFActionType getType();
+    IPv4Address getNwAddr();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionSetNwDst build();
+        OFActionType getType();
+        IPv4Address getNwAddr();
+        Builder setNwAddr(IPv4Address nwAddr);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetNwEcn.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetNwEcn.java
new file mode 100644
index 0000000..a42e2c8
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetNwEcn.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionSetNwEcn extends OFObject, OFAction {
+    OFActionType getType();
+    IpEcn getNwEcn();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionSetNwEcn build();
+        OFActionType getType();
+        IpEcn getNwEcn();
+        Builder setNwEcn(IpEcn nwEcn);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetNwSrc.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetNwSrc.java
new file mode 100644
index 0000000..cd27977
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetNwSrc.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionSetNwSrc extends OFObject, OFAction {
+    OFActionType getType();
+    IPv4Address getNwAddr();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionSetNwSrc build();
+        OFActionType getType();
+        IPv4Address getNwAddr();
+        Builder setNwAddr(IPv4Address nwAddr);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetNwTos.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetNwTos.java
new file mode 100644
index 0000000..38a133b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetNwTos.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionSetNwTos extends OFObject, OFAction {
+    OFActionType getType();
+    short getNwTos();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionSetNwTos build();
+        OFActionType getType();
+        short getNwTos();
+        Builder setNwTos(short nwTos);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetNwTtl.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetNwTtl.java
new file mode 100644
index 0000000..ed35d59
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetNwTtl.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionSetNwTtl extends OFObject, OFAction {
+    OFActionType getType();
+    short getNwTtl();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionSetNwTtl build();
+        OFActionType getType();
+        short getNwTtl();
+        Builder setNwTtl(short nwTtl);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetQueue.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetQueue.java
new file mode 100644
index 0000000..b2115ab
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetQueue.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionSetQueue extends OFObject, OFAction {
+    OFActionType getType();
+    long getQueueId();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionSetQueue build();
+        OFActionType getType();
+        long getQueueId();
+        Builder setQueueId(long queueId);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetTpDst.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetTpDst.java
new file mode 100644
index 0000000..680b99a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetTpDst.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionSetTpDst extends OFObject, OFAction {
+    OFActionType getType();
+    TransportPort getTpPort();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionSetTpDst build();
+        OFActionType getType();
+        TransportPort getTpPort();
+        Builder setTpPort(TransportPort tpPort);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetTpSrc.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetTpSrc.java
new file mode 100644
index 0000000..bf555aa
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetTpSrc.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionSetTpSrc extends OFObject, OFAction {
+    OFActionType getType();
+    TransportPort getTpPort();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionSetTpSrc build();
+        OFActionType getType();
+        TransportPort getTpPort();
+        Builder setTpPort(TransportPort tpPort);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetVlanPcp.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetVlanPcp.java
new file mode 100644
index 0000000..a448078
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetVlanPcp.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionSetVlanPcp extends OFObject, OFAction {
+    OFActionType getType();
+    VlanPcp getVlanPcp();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionSetVlanPcp build();
+        OFActionType getType();
+        VlanPcp getVlanPcp();
+        Builder setVlanPcp(VlanPcp vlanPcp);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetVlanVid.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetVlanVid.java
new file mode 100644
index 0000000..5bbf2c7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionSetVlanVid.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionSetVlanVid extends OFObject, OFAction {
+    OFActionType getType();
+    VlanVid getVlanVid();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionSetVlanVid build();
+        OFActionType getType();
+        VlanVid getVlanVid();
+        Builder setVlanVid(VlanVid vlanVid);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionStripVlan.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionStripVlan.java
new file mode 100644
index 0000000..d3fcc90
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActionStripVlan.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionStripVlan extends OFObject, OFAction {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFAction.Builder {
+        OFActionStripVlan build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActions.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActions.java
new file mode 100644
index 0000000..e465ac5
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/action/OFActions.java
@@ -0,0 +1,93 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_factory_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.action;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+
+public interface OFActions {
+    // Subfactories
+
+    OFActionBsnChecksum.Builder buildBsnChecksum();
+    OFActionBsnChecksum bsnChecksum(U128 checksum);
+    OFActionBsnMirror.Builder buildBsnMirror();
+    OFActionBsnSetTunnelDst.Builder buildBsnSetTunnelDst();
+    OFActionBsnSetTunnelDst bsnSetTunnelDst(long dst);
+    OFActionEnqueue.Builder buildEnqueue() throws UnsupportedOperationException;
+    OFActionEnqueue enqueue(OFPort port, long queueId);
+    OFActionNiciraDecTtl niciraDecTtl();
+    OFActionOutput.Builder buildOutput();
+    OFActionOutput output(OFPort port, int maxLen);
+    OFActionSetDlDst.Builder buildSetDlDst() throws UnsupportedOperationException;
+    OFActionSetDlDst setDlDst(MacAddress dlAddr);
+    OFActionSetDlSrc.Builder buildSetDlSrc() throws UnsupportedOperationException;
+    OFActionSetDlSrc setDlSrc(MacAddress dlAddr);
+    OFActionSetNwDst.Builder buildSetNwDst() throws UnsupportedOperationException;
+    OFActionSetNwDst setNwDst(IPv4Address nwAddr);
+    OFActionSetNwSrc.Builder buildSetNwSrc() throws UnsupportedOperationException;
+    OFActionSetNwSrc setNwSrc(IPv4Address nwAddr);
+    OFActionSetNwTos.Builder buildSetNwTos() throws UnsupportedOperationException;
+    OFActionSetNwTos setNwTos(short nwTos);
+    OFActionSetTpDst.Builder buildSetTpDst() throws UnsupportedOperationException;
+    OFActionSetTpDst setTpDst(TransportPort tpPort);
+    OFActionSetTpSrc.Builder buildSetTpSrc() throws UnsupportedOperationException;
+    OFActionSetTpSrc setTpSrc(TransportPort tpPort);
+    OFActionSetVlanPcp.Builder buildSetVlanPcp() throws UnsupportedOperationException;
+    OFActionSetVlanPcp setVlanPcp(VlanPcp vlanPcp);
+    OFActionSetVlanVid.Builder buildSetVlanVid() throws UnsupportedOperationException;
+    OFActionSetVlanVid setVlanVid(VlanVid vlanVid);
+    OFActionStripVlan stripVlan();
+    OFActionCopyTtlIn copyTtlIn();
+    OFActionCopyTtlOut copyTtlOut();
+    OFActionDecMplsTtl decMplsTtl();
+    OFActionDecNwTtl decNwTtl();
+    OFActionGroup.Builder buildGroup() throws UnsupportedOperationException;
+    OFActionGroup group(OFGroup group);
+    OFActionPopMpls.Builder buildPopMpls() throws UnsupportedOperationException;
+    OFActionPopMpls popMpls(EthType ethertype);
+    OFActionPopVlan popVlan();
+    OFActionPushMpls.Builder buildPushMpls() throws UnsupportedOperationException;
+    OFActionPushMpls pushMpls(EthType ethertype);
+    OFActionPushVlan.Builder buildPushVlan() throws UnsupportedOperationException;
+    OFActionPushVlan pushVlan(EthType ethertype);
+    OFActionSetMplsLabel.Builder buildSetMplsLabel() throws UnsupportedOperationException;
+    OFActionSetMplsLabel setMplsLabel(long mplsLabel);
+    OFActionSetMplsTc.Builder buildSetMplsTc() throws UnsupportedOperationException;
+    OFActionSetMplsTc setMplsTc(short mplsTc);
+    OFActionSetMplsTtl.Builder buildSetMplsTtl() throws UnsupportedOperationException;
+    OFActionSetMplsTtl setMplsTtl(short mplsTtl);
+    OFActionSetNwEcn.Builder buildSetNwEcn() throws UnsupportedOperationException;
+    OFActionSetNwEcn setNwEcn(IpEcn nwEcn);
+    OFActionSetNwTtl.Builder buildSetNwTtl() throws UnsupportedOperationException;
+    OFActionSetNwTtl setNwTtl(short nwTtl);
+    OFActionSetQueue.Builder buildSetQueue() throws UnsupportedOperationException;
+    OFActionSetQueue setQueue(long queueId);
+    OFActionSetField.Builder buildSetField() throws UnsupportedOperationException;
+    OFActionSetField setField(OFOxm<?> field);
+    OFActionPopPbb popPbb();
+    OFActionPushPbb.Builder buildPushPbb() throws UnsupportedOperationException;
+    OFActionPushPbb pushPbb(EthType ethertype);
+
+    OFMessageReader<OFAction> getReader();
+    OFVersion getVersion();
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionId.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionId.java
new file mode 100644
index 0000000..0ffacb4
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionId.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionId extends OFObject {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFActionId build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdBsn.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdBsn.java
new file mode 100644
index 0000000..c74b037
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdBsn.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdBsn extends OFObject, OFActionIdExperimenter {
+    OFActionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionIdExperimenter.Builder {
+        OFActionIdBsn build();
+        OFActionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdBsnChecksum.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdBsnChecksum.java
new file mode 100644
index 0000000..b051b37
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdBsnChecksum.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdBsnChecksum extends OFObject, OFActionIdBsn {
+    OFActionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionIdBsn.Builder {
+        OFActionIdBsnChecksum build();
+        OFActionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdBsnMirror.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdBsnMirror.java
new file mode 100644
index 0000000..60c4c92
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdBsnMirror.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdBsnMirror extends OFObject, OFActionIdBsn {
+    OFActionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionIdBsn.Builder {
+        OFActionIdBsnMirror build();
+        OFActionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdBsnSetTunnelDst.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdBsnSetTunnelDst.java
new file mode 100644
index 0000000..b2c407a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdBsnSetTunnelDst.java
@@ -0,0 +1,45 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdBsnSetTunnelDst extends OFObject, OFActionIdBsn {
+    OFActionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionIdBsn.Builder {
+        OFActionIdBsnSetTunnelDst build();
+        OFActionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdCopyTtlIn.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdCopyTtlIn.java
new file mode 100644
index 0000000..0be31c3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdCopyTtlIn.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdCopyTtlIn extends OFObject, OFActionId {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionId.Builder {
+        OFActionIdCopyTtlIn build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdCopyTtlOut.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdCopyTtlOut.java
new file mode 100644
index 0000000..b29d1ff
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdCopyTtlOut.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdCopyTtlOut extends OFObject, OFActionId {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionId.Builder {
+        OFActionIdCopyTtlOut build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdDecMplsTtl.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdDecMplsTtl.java
new file mode 100644
index 0000000..dfcc979
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdDecMplsTtl.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdDecMplsTtl extends OFObject, OFActionId {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionId.Builder {
+        OFActionIdDecMplsTtl build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdDecNwTtl.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdDecNwTtl.java
new file mode 100644
index 0000000..f9b31f1
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdDecNwTtl.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdDecNwTtl extends OFObject, OFActionId {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionId.Builder {
+        OFActionIdDecNwTtl build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdExperimenter.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdExperimenter.java
new file mode 100644
index 0000000..084ca57
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdExperimenter.java
@@ -0,0 +1,42 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdExperimenter extends OFObject, OFActionId {
+    OFActionType getType();
+    long getExperimenter();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionId.Builder {
+        OFActionIdExperimenter build();
+        OFActionType getType();
+        long getExperimenter();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdGroup.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdGroup.java
new file mode 100644
index 0000000..b38c9ab
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdGroup.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdGroup extends OFObject, OFActionId {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionId.Builder {
+        OFActionIdGroup build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdNicira.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdNicira.java
new file mode 100644
index 0000000..7c723ac
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdNicira.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdNicira extends OFObject, OFActionIdExperimenter {
+    OFActionType getType();
+    long getExperimenter();
+    int getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionIdExperimenter.Builder {
+        OFActionIdNicira build();
+        OFActionType getType();
+        long getExperimenter();
+        int getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdNiciraDecTtl.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdNiciraDecTtl.java
new file mode 100644
index 0000000..6d53414
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdNiciraDecTtl.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdNiciraDecTtl extends OFObject, OFActionIdNicira {
+    OFActionType getType();
+    long getExperimenter();
+    int getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionIdNicira.Builder {
+        OFActionIdNiciraDecTtl build();
+        OFActionType getType();
+        long getExperimenter();
+        int getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdOutput.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdOutput.java
new file mode 100644
index 0000000..ea2749c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdOutput.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdOutput extends OFObject, OFActionId {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionId.Builder {
+        OFActionIdOutput build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPopMpls.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPopMpls.java
new file mode 100644
index 0000000..9308ca1
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPopMpls.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdPopMpls extends OFObject, OFActionId {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionId.Builder {
+        OFActionIdPopMpls build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPopPbb.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPopPbb.java
new file mode 100644
index 0000000..4371ec2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPopPbb.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdPopPbb extends OFObject, OFActionId {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionId.Builder {
+        OFActionIdPopPbb build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPopVlan.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPopVlan.java
new file mode 100644
index 0000000..757d40a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPopVlan.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdPopVlan extends OFObject, OFActionId {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionId.Builder {
+        OFActionIdPopVlan build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPushMpls.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPushMpls.java
new file mode 100644
index 0000000..5f76d66
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPushMpls.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdPushMpls extends OFObject, OFActionId {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionId.Builder {
+        OFActionIdPushMpls build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPushPbb.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPushPbb.java
new file mode 100644
index 0000000..0005457
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPushPbb.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdPushPbb extends OFObject, OFActionId {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionId.Builder {
+        OFActionIdPushPbb build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPushVlan.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPushVlan.java
new file mode 100644
index 0000000..c94cb34
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdPushVlan.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdPushVlan extends OFObject, OFActionId {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionId.Builder {
+        OFActionIdPushVlan build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdSetField.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdSetField.java
new file mode 100644
index 0000000..d3f5328
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdSetField.java
@@ -0,0 +1,41 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdSetField extends OFObject, OFActionId {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionId.Builder {
+        OFActionIdSetField build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdSetMplsTtl.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdSetMplsTtl.java
new file mode 100644
index 0000000..706c772
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdSetMplsTtl.java
@@ -0,0 +1,41 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdSetMplsTtl extends OFObject, OFActionId {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionId.Builder {
+        OFActionIdSetMplsTtl build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdSetNwTtl.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdSetNwTtl.java
new file mode 100644
index 0000000..8e588be
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdSetNwTtl.java
@@ -0,0 +1,41 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdSetNwTtl extends OFObject, OFActionId {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionId.Builder {
+        OFActionIdSetNwTtl build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdSetQueue.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdSetQueue.java
new file mode 100644
index 0000000..2c29b66
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIdSetQueue.java
@@ -0,0 +1,41 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFActionIdSetQueue extends OFObject, OFActionId {
+    OFActionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFActionId.Builder {
+        OFActionIdSetQueue build();
+        OFActionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIds.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIds.java
new file mode 100644
index 0000000..8c6c132
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/actionid/OFActionIds.java
@@ -0,0 +1,54 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_factory_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.actionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+
+public interface OFActionIds {
+    // Subfactories
+
+    OFActionIdBsnChecksum bsnChecksum();
+    OFActionIdBsnMirror bsnMirror();
+    OFActionIdBsnSetTunnelDst bsnSetTunnelDst();
+    OFActionIdCopyTtlIn copyTtlIn();
+    OFActionIdCopyTtlOut copyTtlOut();
+    OFActionIdDecMplsTtl decMplsTtl();
+    OFActionIdDecNwTtl decNwTtl();
+    OFActionIdGroup group();
+    OFActionIdNiciraDecTtl niciraDecTtl();
+    OFActionIdOutput output();
+    OFActionIdPopMpls popMpls();
+    OFActionIdPopPbb popPbb();
+    OFActionIdPopVlan popVlan();
+    OFActionIdPushMpls pushMpls();
+    OFActionIdPushPbb pushPbb();
+    OFActionIdPushVlan pushVlan();
+    OFActionIdSetField setField();
+    OFActionIdSetMplsTtl setMplsTtl();
+    OFActionIdSetNwTtl setNwTtl();
+    OFActionIdSetQueue setQueue();
+
+    OFMessageReader<OFActionId> getReader();
+    OFVersion getVersion();
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlv.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlv.java
new file mode 100644
index 0000000..bc150fd
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlv.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlv extends OFObject {
+    int getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFBsnTlv build();
+        int getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvBroadcastQueryTimeout.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvBroadcastQueryTimeout.java
new file mode 100644
index 0000000..7de728a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvBroadcastQueryTimeout.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvBroadcastQueryTimeout extends OFObject, OFBsnTlv {
+    int getType();
+    long getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvBroadcastQueryTimeout build();
+        int getType();
+        long getValue();
+        Builder setValue(long value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvCircuitId.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvCircuitId.java
new file mode 100644
index 0000000..d20aed0
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvCircuitId.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvCircuitId extends OFObject, OFBsnTlv {
+    int getType();
+    byte[] getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvCircuitId build();
+        int getType();
+        byte[] getValue();
+        Builder setValue(byte[] value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvCrcEnabled.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvCrcEnabled.java
new file mode 100644
index 0000000..ec66f67
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvCrcEnabled.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvCrcEnabled extends OFObject, OFBsnTlv {
+    int getType();
+    short getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvCrcEnabled build();
+        int getType();
+        short getValue();
+        Builder setValue(short value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvIdleNotification.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvIdleNotification.java
new file mode 100644
index 0000000..57dd477
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvIdleNotification.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvIdleNotification extends OFObject, OFBsnTlv {
+    int getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvIdleNotification build();
+        int getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvIdleTime.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvIdleTime.java
new file mode 100644
index 0000000..ac87110
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvIdleTime.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvIdleTime extends OFObject, OFBsnTlv {
+    int getType();
+    U64 getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvIdleTime build();
+        int getType();
+        U64 getValue();
+        Builder setValue(U64 value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvIdleTimeout.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvIdleTimeout.java
new file mode 100644
index 0000000..deb7e68
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvIdleTimeout.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvIdleTimeout extends OFObject, OFBsnTlv {
+    int getType();
+    long getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvIdleTimeout build();
+        int getType();
+        long getValue();
+        Builder setValue(long value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvIpv4.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvIpv4.java
new file mode 100644
index 0000000..ea7dc41
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvIpv4.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvIpv4 extends OFObject, OFBsnTlv {
+    int getType();
+    IPv4Address getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvIpv4 build();
+        int getType();
+        IPv4Address getValue();
+        Builder setValue(IPv4Address value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvMac.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvMac.java
new file mode 100644
index 0000000..f6978a5
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvMac.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvMac extends OFObject, OFBsnTlv {
+    int getType();
+    MacAddress getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvMac build();
+        int getType();
+        MacAddress getValue();
+        Builder setValue(MacAddress value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvMissPackets.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvMissPackets.java
new file mode 100644
index 0000000..2b9a7ea
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvMissPackets.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvMissPackets extends OFObject, OFBsnTlv {
+    int getType();
+    U64 getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvMissPackets build();
+        int getType();
+        U64 getValue();
+        Builder setValue(U64 value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvPort.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvPort.java
new file mode 100644
index 0000000..536075a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvPort.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvPort extends OFObject, OFBsnTlv {
+    int getType();
+    OFPort getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvPort build();
+        int getType();
+        OFPort getValue();
+        Builder setValue(OFPort value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvQueueId.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvQueueId.java
new file mode 100644
index 0000000..844c727
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvQueueId.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvQueueId extends OFObject, OFBsnTlv {
+    int getType();
+    long getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvQueueId build();
+        int getType();
+        long getValue();
+        Builder setValue(long value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvQueueWeight.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvQueueWeight.java
new file mode 100644
index 0000000..a41686d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvQueueWeight.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvQueueWeight extends OFObject, OFBsnTlv {
+    int getType();
+    long getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvQueueWeight build();
+        int getType();
+        long getValue();
+        Builder setValue(long value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvReplyPackets.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvReplyPackets.java
new file mode 100644
index 0000000..ef2d93e
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvReplyPackets.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvReplyPackets extends OFObject, OFBsnTlv {
+    int getType();
+    U64 getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvReplyPackets build();
+        int getType();
+        U64 getValue();
+        Builder setValue(U64 value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvRequestPackets.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvRequestPackets.java
new file mode 100644
index 0000000..bed22ae
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvRequestPackets.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvRequestPackets extends OFObject, OFBsnTlv {
+    int getType();
+    U64 getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvRequestPackets build();
+        int getType();
+        U64 getValue();
+        Builder setValue(U64 value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvRxPackets.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvRxPackets.java
new file mode 100644
index 0000000..98ac7da
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvRxPackets.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvRxPackets extends OFObject, OFBsnTlv {
+    int getType();
+    U64 getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvRxPackets build();
+        int getType();
+        U64 getValue();
+        Builder setValue(U64 value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvTxPackets.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvTxPackets.java
new file mode 100644
index 0000000..e292b24
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvTxPackets.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvTxPackets extends OFObject, OFBsnTlv {
+    int getType();
+    U64 getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvTxPackets build();
+        int getType();
+        U64 getValue();
+        Builder setValue(U64 value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvUdfAnchor.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvUdfAnchor.java
new file mode 100644
index 0000000..05eea9b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvUdfAnchor.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvUdfAnchor extends OFObject, OFBsnTlv {
+    int getType();
+    OFBsnUdfAnchor getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvUdfAnchor build();
+        int getType();
+        OFBsnUdfAnchor getValue();
+        Builder setValue(OFBsnUdfAnchor value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvUdfId.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvUdfId.java
new file mode 100644
index 0000000..ff5156b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvUdfId.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvUdfId extends OFObject, OFBsnTlv {
+    int getType();
+    int getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvUdfId build();
+        int getType();
+        int getValue();
+        Builder setValue(int value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvUdfLength.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvUdfLength.java
new file mode 100644
index 0000000..03ed71b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvUdfLength.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvUdfLength extends OFObject, OFBsnTlv {
+    int getType();
+    int getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvUdfLength build();
+        int getType();
+        int getValue();
+        Builder setValue(int value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvUdfOffset.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvUdfOffset.java
new file mode 100644
index 0000000..c572fbf
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvUdfOffset.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvUdfOffset extends OFObject, OFBsnTlv {
+    int getType();
+    int getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvUdfOffset build();
+        int getType();
+        int getValue();
+        Builder setValue(int value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvUnicastQueryTimeout.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvUnicastQueryTimeout.java
new file mode 100644
index 0000000..26c6b12
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvUnicastQueryTimeout.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvUnicastQueryTimeout extends OFObject, OFBsnTlv {
+    int getType();
+    long getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvUnicastQueryTimeout build();
+        int getType();
+        long getValue();
+        Builder setValue(long value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvVlanVid.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvVlanVid.java
new file mode 100644
index 0000000..3943538
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvVlanVid.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvVlanVid extends OFObject, OFBsnTlv {
+    int getType();
+    VlanVid getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvVlanVid build();
+        int getType();
+        VlanVid getValue();
+        Builder setValue(VlanVid value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvVrf.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvVrf.java
new file mode 100644
index 0000000..b89d0e3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvVrf.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBsnTlvVrf extends OFObject, OFBsnTlv {
+    int getType();
+    long getValue();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFBsnTlv.Builder {
+        OFBsnTlvVrf build();
+        int getType();
+        long getValue();
+        Builder setValue(long value);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvs.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvs.java
new file mode 100644
index 0000000..b89d774
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/bsntlv/OFBsnTlvs.java
@@ -0,0 +1,78 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_factory_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.bsntlv;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public interface OFBsnTlvs {
+    // Subfactories
+
+    OFBsnTlvBroadcastQueryTimeout.Builder buildBroadcastQueryTimeout() throws UnsupportedOperationException;
+    OFBsnTlvBroadcastQueryTimeout broadcastQueryTimeout(long value);
+    OFBsnTlvCircuitId.Builder buildCircuitId() throws UnsupportedOperationException;
+    OFBsnTlvCircuitId circuitId(byte[] value);
+    OFBsnTlvCrcEnabled.Builder buildCrcEnabled() throws UnsupportedOperationException;
+    OFBsnTlvCrcEnabled crcEnabled(short value);
+    OFBsnTlvIdleNotification idleNotification();
+    OFBsnTlvIdleTime.Builder buildIdleTime() throws UnsupportedOperationException;
+    OFBsnTlvIdleTime idleTime(U64 value);
+    OFBsnTlvIdleTimeout.Builder buildIdleTimeout() throws UnsupportedOperationException;
+    OFBsnTlvIdleTimeout idleTimeout(long value);
+    OFBsnTlvIpv4.Builder buildIpv4() throws UnsupportedOperationException;
+    OFBsnTlvIpv4 ipv4(IPv4Address value);
+    OFBsnTlvMac.Builder buildMac() throws UnsupportedOperationException;
+    OFBsnTlvMac mac(MacAddress value);
+    OFBsnTlvMissPackets.Builder buildMissPackets() throws UnsupportedOperationException;
+    OFBsnTlvMissPackets missPackets(U64 value);
+    OFBsnTlvPort.Builder buildPort() throws UnsupportedOperationException;
+    OFBsnTlvPort port(OFPort value);
+    OFBsnTlvQueueId.Builder buildQueueId() throws UnsupportedOperationException;
+    OFBsnTlvQueueId queueId(long value);
+    OFBsnTlvQueueWeight.Builder buildQueueWeight() throws UnsupportedOperationException;
+    OFBsnTlvQueueWeight queueWeight(long value);
+    OFBsnTlvReplyPackets.Builder buildReplyPackets() throws UnsupportedOperationException;
+    OFBsnTlvReplyPackets replyPackets(U64 value);
+    OFBsnTlvRequestPackets.Builder buildRequestPackets() throws UnsupportedOperationException;
+    OFBsnTlvRequestPackets requestPackets(U64 value);
+    OFBsnTlvRxPackets.Builder buildRxPackets() throws UnsupportedOperationException;
+    OFBsnTlvRxPackets rxPackets(U64 value);
+    OFBsnTlvTxPackets.Builder buildTxPackets() throws UnsupportedOperationException;
+    OFBsnTlvTxPackets txPackets(U64 value);
+    OFBsnTlvUdfAnchor.Builder buildUdfAnchor() throws UnsupportedOperationException;
+    OFBsnTlvUdfAnchor udfAnchor(OFBsnUdfAnchor value);
+    OFBsnTlvUdfId.Builder buildUdfId() throws UnsupportedOperationException;
+    OFBsnTlvUdfId udfId(int value);
+    OFBsnTlvUdfLength.Builder buildUdfLength() throws UnsupportedOperationException;
+    OFBsnTlvUdfLength udfLength(int value);
+    OFBsnTlvUdfOffset.Builder buildUdfOffset() throws UnsupportedOperationException;
+    OFBsnTlvUdfOffset udfOffset(int value);
+    OFBsnTlvUnicastQueryTimeout.Builder buildUnicastQueryTimeout() throws UnsupportedOperationException;
+    OFBsnTlvUnicastQueryTimeout unicastQueryTimeout(long value);
+    OFBsnTlvVlanVid.Builder buildVlanVid() throws UnsupportedOperationException;
+    OFBsnTlvVlanVid vlanVid(VlanVid value);
+    OFBsnTlvVrf.Builder buildVrf() throws UnsupportedOperationException;
+    OFBsnTlvVrf vrf(long value);
+
+    OFMessageReader<OFBsnTlv> getReader();
+    OFVersion getVersion();
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFBadActionErrorMsg.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFBadActionErrorMsg.java
new file mode 100644
index 0000000..b21fd98
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFBadActionErrorMsg.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.errormsg;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBadActionErrorMsg extends OFObject, OFErrorMsg {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFErrorType getErrType();
+    OFBadActionCode getCode();
+    OFErrorCauseData getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFErrorMsg.Builder {
+        OFBadActionErrorMsg build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFErrorType getErrType();
+        OFBadActionCode getCode();
+        Builder setCode(OFBadActionCode code);
+        OFErrorCauseData getData();
+        Builder setData(OFErrorCauseData data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFBadInstructionErrorMsg.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFBadInstructionErrorMsg.java
new file mode 100644
index 0000000..2a9ae22
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFBadInstructionErrorMsg.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.errormsg;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBadInstructionErrorMsg extends OFObject, OFErrorMsg {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFErrorType getErrType();
+    OFBadInstructionCode getCode();
+    OFErrorCauseData getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFErrorMsg.Builder {
+        OFBadInstructionErrorMsg build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFErrorType getErrType();
+        OFBadInstructionCode getCode();
+        Builder setCode(OFBadInstructionCode code);
+        OFErrorCauseData getData();
+        Builder setData(OFErrorCauseData data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFBadMatchErrorMsg.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFBadMatchErrorMsg.java
new file mode 100644
index 0000000..73a2508
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFBadMatchErrorMsg.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.errormsg;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBadMatchErrorMsg extends OFObject, OFErrorMsg {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFErrorType getErrType();
+    OFBadMatchCode getCode();
+    OFErrorCauseData getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFErrorMsg.Builder {
+        OFBadMatchErrorMsg build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFErrorType getErrType();
+        OFBadMatchCode getCode();
+        Builder setCode(OFBadMatchCode code);
+        OFErrorCauseData getData();
+        Builder setData(OFErrorCauseData data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFBadRequestErrorMsg.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFBadRequestErrorMsg.java
new file mode 100644
index 0000000..dac9bcc
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFBadRequestErrorMsg.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.errormsg;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFBadRequestErrorMsg extends OFObject, OFErrorMsg {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFErrorType getErrType();
+    OFBadRequestCode getCode();
+    OFErrorCauseData getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFErrorMsg.Builder {
+        OFBadRequestErrorMsg build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFErrorType getErrType();
+        OFBadRequestCode getCode();
+        Builder setCode(OFBadRequestCode code);
+        OFErrorCauseData getData();
+        Builder setData(OFErrorCauseData data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFErrorMsgs.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFErrorMsgs.java
new file mode 100644
index 0000000..db7485d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFErrorMsgs.java
@@ -0,0 +1,48 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_factory_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.errormsg;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public interface OFErrorMsgs extends XidGenerator {
+    // Subfactories
+
+    OFBadActionErrorMsg.Builder buildBadActionErrorMsg();
+    OFBadRequestErrorMsg.Builder buildBadRequestErrorMsg();
+    OFFlowModFailedErrorMsg.Builder buildFlowModFailedErrorMsg();
+    OFHelloFailedErrorMsg.Builder buildHelloFailedErrorMsg();
+    OFPortModFailedErrorMsg.Builder buildPortModFailedErrorMsg();
+    OFQueueOpFailedErrorMsg.Builder buildQueueOpFailedErrorMsg();
+    OFBadInstructionErrorMsg.Builder buildBadInstructionErrorMsg() throws UnsupportedOperationException;
+    OFBadMatchErrorMsg.Builder buildBadMatchErrorMsg() throws UnsupportedOperationException;
+    OFGroupModFailedErrorMsg.Builder buildGroupModFailedErrorMsg() throws UnsupportedOperationException;
+    OFSwitchConfigFailedErrorMsg.Builder buildSwitchConfigFailedErrorMsg() throws UnsupportedOperationException;
+    OFTableModFailedErrorMsg.Builder buildTableModFailedErrorMsg() throws UnsupportedOperationException;
+    OFExperimenterErrorMsg.Builder buildExperimenterErrorMsg() throws UnsupportedOperationException;
+    OFRoleRequestFailedErrorMsg.Builder buildRoleRequestFailedErrorMsg() throws UnsupportedOperationException;
+    OFMeterModFailedErrorMsg.Builder buildMeterModFailedErrorMsg() throws UnsupportedOperationException;
+    OFTableFeaturesFailedErrorMsg.Builder buildTableFeaturesFailedErrorMsg() throws UnsupportedOperationException;
+
+    OFMessageReader<OFErrorMsg> getReader();
+    OFVersion getVersion();
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFExperimenterErrorMsg.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFExperimenterErrorMsg.java
new file mode 100644
index 0000000..124b01e
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFExperimenterErrorMsg.java
@@ -0,0 +1,54 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.errormsg;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFExperimenterErrorMsg extends OFObject, OFErrorMsg {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFErrorType getErrType();
+    int getSubtype();
+    long getExperimenter();
+    OFErrorCauseData getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFErrorMsg.Builder {
+        OFExperimenterErrorMsg build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFErrorType getErrType();
+        int getSubtype();
+        Builder setSubtype(int subtype);
+        long getExperimenter();
+        Builder setExperimenter(long experimenter);
+        OFErrorCauseData getData();
+        Builder setData(OFErrorCauseData data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFFlowModFailedErrorMsg.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFFlowModFailedErrorMsg.java
new file mode 100644
index 0000000..91d0d43
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFFlowModFailedErrorMsg.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.errormsg;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFFlowModFailedErrorMsg extends OFObject, OFErrorMsg {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFErrorType getErrType();
+    OFFlowModFailedCode getCode();
+    OFErrorCauseData getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFErrorMsg.Builder {
+        OFFlowModFailedErrorMsg build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFErrorType getErrType();
+        OFFlowModFailedCode getCode();
+        Builder setCode(OFFlowModFailedCode code);
+        OFErrorCauseData getData();
+        Builder setData(OFErrorCauseData data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFGroupModFailedErrorMsg.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFGroupModFailedErrorMsg.java
new file mode 100644
index 0000000..93944c1
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFGroupModFailedErrorMsg.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.errormsg;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFGroupModFailedErrorMsg extends OFObject, OFErrorMsg {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFErrorType getErrType();
+    OFGroupModFailedCode getCode();
+    OFErrorCauseData getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFErrorMsg.Builder {
+        OFGroupModFailedErrorMsg build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFErrorType getErrType();
+        OFGroupModFailedCode getCode();
+        Builder setCode(OFGroupModFailedCode code);
+        OFErrorCauseData getData();
+        Builder setData(OFErrorCauseData data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFHelloFailedErrorMsg.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFHelloFailedErrorMsg.java
new file mode 100644
index 0000000..7cf3afd
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFHelloFailedErrorMsg.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.errormsg;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFHelloFailedErrorMsg extends OFObject, OFErrorMsg {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFErrorType getErrType();
+    OFHelloFailedCode getCode();
+    OFErrorCauseData getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFErrorMsg.Builder {
+        OFHelloFailedErrorMsg build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFErrorType getErrType();
+        OFHelloFailedCode getCode();
+        Builder setCode(OFHelloFailedCode code);
+        OFErrorCauseData getData();
+        Builder setData(OFErrorCauseData data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFMeterModFailedErrorMsg.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFMeterModFailedErrorMsg.java
new file mode 100644
index 0000000..3d7a0c3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFMeterModFailedErrorMsg.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.errormsg;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMeterModFailedErrorMsg extends OFObject, OFErrorMsg {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFErrorType getErrType();
+    OFMeterModFailedCode getCode();
+    OFErrorCauseData getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFErrorMsg.Builder {
+        OFMeterModFailedErrorMsg build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFErrorType getErrType();
+        OFMeterModFailedCode getCode();
+        Builder setCode(OFMeterModFailedCode code);
+        OFErrorCauseData getData();
+        Builder setData(OFErrorCauseData data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFPortModFailedErrorMsg.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFPortModFailedErrorMsg.java
new file mode 100644
index 0000000..dfdfb79
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFPortModFailedErrorMsg.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.errormsg;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFPortModFailedErrorMsg extends OFObject, OFErrorMsg {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFErrorType getErrType();
+    OFPortModFailedCode getCode();
+    OFErrorCauseData getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFErrorMsg.Builder {
+        OFPortModFailedErrorMsg build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFErrorType getErrType();
+        OFPortModFailedCode getCode();
+        Builder setCode(OFPortModFailedCode code);
+        OFErrorCauseData getData();
+        Builder setData(OFErrorCauseData data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFQueueOpFailedErrorMsg.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFQueueOpFailedErrorMsg.java
new file mode 100644
index 0000000..6c460df
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFQueueOpFailedErrorMsg.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.errormsg;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFQueueOpFailedErrorMsg extends OFObject, OFErrorMsg {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFErrorType getErrType();
+    OFQueueOpFailedCode getCode();
+    OFErrorCauseData getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFErrorMsg.Builder {
+        OFQueueOpFailedErrorMsg build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFErrorType getErrType();
+        OFQueueOpFailedCode getCode();
+        Builder setCode(OFQueueOpFailedCode code);
+        OFErrorCauseData getData();
+        Builder setData(OFErrorCauseData data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFRoleRequestFailedErrorMsg.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFRoleRequestFailedErrorMsg.java
new file mode 100644
index 0000000..c24d291
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFRoleRequestFailedErrorMsg.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.errormsg;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFRoleRequestFailedErrorMsg extends OFObject, OFErrorMsg {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFErrorType getErrType();
+    OFRoleRequestFailedCode getCode();
+    OFErrorCauseData getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFErrorMsg.Builder {
+        OFRoleRequestFailedErrorMsg build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFErrorType getErrType();
+        OFRoleRequestFailedCode getCode();
+        Builder setCode(OFRoleRequestFailedCode code);
+        OFErrorCauseData getData();
+        Builder setData(OFErrorCauseData data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFSwitchConfigFailedErrorMsg.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFSwitchConfigFailedErrorMsg.java
new file mode 100644
index 0000000..1c797ab
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFSwitchConfigFailedErrorMsg.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.errormsg;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFSwitchConfigFailedErrorMsg extends OFObject, OFErrorMsg {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFErrorType getErrType();
+    OFSwitchConfigFailedCode getCode();
+    OFErrorCauseData getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFErrorMsg.Builder {
+        OFSwitchConfigFailedErrorMsg build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFErrorType getErrType();
+        OFSwitchConfigFailedCode getCode();
+        Builder setCode(OFSwitchConfigFailedCode code);
+        OFErrorCauseData getData();
+        Builder setData(OFErrorCauseData data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFTableFeaturesFailedErrorMsg.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFTableFeaturesFailedErrorMsg.java
new file mode 100644
index 0000000..93075dd
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFTableFeaturesFailedErrorMsg.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.errormsg;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableFeaturesFailedErrorMsg extends OFObject, OFErrorMsg {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFErrorType getErrType();
+    OFTableFeaturesFailedCode getCode();
+    OFErrorCauseData getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFErrorMsg.Builder {
+        OFTableFeaturesFailedErrorMsg build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFErrorType getErrType();
+        OFTableFeaturesFailedCode getCode();
+        Builder setCode(OFTableFeaturesFailedCode code);
+        OFErrorCauseData getData();
+        Builder setData(OFErrorCauseData data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFTableModFailedErrorMsg.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFTableModFailedErrorMsg.java
new file mode 100644
index 0000000..9e7c822
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/errormsg/OFTableModFailedErrorMsg.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.errormsg;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFTableModFailedErrorMsg extends OFObject, OFErrorMsg {
+    OFVersion getVersion();
+    OFType getType();
+    long getXid();
+    OFErrorType getErrType();
+    OFTableModFailedCode getCode();
+    OFErrorCauseData getData();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFErrorMsg.Builder {
+        OFTableModFailedErrorMsg build();
+        OFVersion getVersion();
+        OFType getType();
+        long getXid();
+        Builder setXid(long xid);
+        OFErrorType getErrType();
+        OFTableModFailedCode getCode();
+        Builder setCode(OFTableModFailedCode code);
+        OFErrorCauseData getData();
+        Builder setData(OFErrorCauseData data);
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstruction.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstruction.java
new file mode 100644
index 0000000..85c4292
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstruction.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstruction extends OFObject {
+    OFInstructionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFInstruction build();
+        OFInstructionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionApplyActions.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionApplyActions.java
new file mode 100644
index 0000000..5547beb
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionApplyActions.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionApplyActions extends OFObject, OFInstruction {
+    OFInstructionType getType();
+    List<OFAction> getActions();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstruction.Builder {
+        OFInstructionApplyActions build();
+        OFInstructionType getType();
+        List<OFAction> getActions();
+        Builder setActions(List<OFAction> actions);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsn.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsn.java
new file mode 100644
index 0000000..24f9237
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsn.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionBsn extends OFObject, OFInstructionExperimenter {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionExperimenter.Builder {
+        OFInstructionBsn build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnArpOffload.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnArpOffload.java
new file mode 100644
index 0000000..add97cc
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnArpOffload.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionBsnArpOffload extends OFObject, OFInstructionBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionBsn.Builder {
+        OFInstructionBsnArpOffload build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnDeny.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnDeny.java
new file mode 100644
index 0000000..e930943
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnDeny.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionBsnDeny extends OFObject, OFInstructionBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionBsn.Builder {
+        OFInstructionBsnDeny build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnDhcpOffload.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnDhcpOffload.java
new file mode 100644
index 0000000..eb8a422
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnDhcpOffload.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionBsnDhcpOffload extends OFObject, OFInstructionBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionBsn.Builder {
+        OFInstructionBsnDhcpOffload build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnDisableSplitHorizonCheck.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnDisableSplitHorizonCheck.java
new file mode 100644
index 0000000..bef2b49
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnDisableSplitHorizonCheck.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionBsnDisableSplitHorizonCheck extends OFObject, OFInstructionBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionBsn.Builder {
+        OFInstructionBsnDisableSplitHorizonCheck build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnDisableSrcMacCheck.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnDisableSrcMacCheck.java
new file mode 100644
index 0000000..3e38615
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnDisableSrcMacCheck.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionBsnDisableSrcMacCheck extends OFObject, OFInstructionBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionBsn.Builder {
+        OFInstructionBsnDisableSrcMacCheck build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnDisableVlanCounters.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnDisableVlanCounters.java
new file mode 100644
index 0000000..9295e32
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnDisableVlanCounters.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionBsnDisableVlanCounters extends OFObject, OFInstructionBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionBsn.Builder {
+        OFInstructionBsnDisableVlanCounters build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnPacketOfDeath.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnPacketOfDeath.java
new file mode 100644
index 0000000..0f34780
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnPacketOfDeath.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionBsnPacketOfDeath extends OFObject, OFInstructionBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionBsn.Builder {
+        OFInstructionBsnPacketOfDeath build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnPermit.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnPermit.java
new file mode 100644
index 0000000..a23fcf3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnPermit.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionBsnPermit extends OFObject, OFInstructionBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionBsn.Builder {
+        OFInstructionBsnPermit build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnPrioritizePdus.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnPrioritizePdus.java
new file mode 100644
index 0000000..41c242e
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnPrioritizePdus.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionBsnPrioritizePdus extends OFObject, OFInstructionBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionBsn.Builder {
+        OFInstructionBsnPrioritizePdus build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnRequireVlanXlate.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnRequireVlanXlate.java
new file mode 100644
index 0000000..b6d4f9b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionBsnRequireVlanXlate.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionBsnRequireVlanXlate extends OFObject, OFInstructionBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionBsn.Builder {
+        OFInstructionBsnRequireVlanXlate build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionClearActions.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionClearActions.java
new file mode 100644
index 0000000..8323776
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionClearActions.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionClearActions extends OFObject, OFInstruction {
+    OFInstructionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstruction.Builder {
+        OFInstructionClearActions build();
+        OFInstructionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionExperimenter.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionExperimenter.java
new file mode 100644
index 0000000..f6b4244
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionExperimenter.java
@@ -0,0 +1,42 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionExperimenter extends OFObject, OFInstruction {
+    OFInstructionType getType();
+    long getExperimenter();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstruction.Builder {
+        OFInstructionExperimenter build();
+        OFInstructionType getType();
+        long getExperimenter();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionGotoTable.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionGotoTable.java
new file mode 100644
index 0000000..9a80fb2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionGotoTable.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionGotoTable extends OFObject, OFInstruction {
+    OFInstructionType getType();
+    TableId getTableId();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstruction.Builder {
+        OFInstructionGotoTable build();
+        OFInstructionType getType();
+        TableId getTableId();
+        Builder setTableId(TableId tableId);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionMeter.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionMeter.java
new file mode 100644
index 0000000..e965291
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionMeter.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionMeter extends OFObject, OFInstruction {
+    OFInstructionType getType();
+    long getMeterId();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstruction.Builder {
+        OFInstructionMeter build();
+        OFInstructionType getType();
+        long getMeterId();
+        Builder setMeterId(long meterId);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionWriteActions.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionWriteActions.java
new file mode 100644
index 0000000..a6f62c4
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionWriteActions.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionWriteActions extends OFObject, OFInstruction {
+    OFInstructionType getType();
+    List<OFAction> getActions();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstruction.Builder {
+        OFInstructionWriteActions build();
+        OFInstructionType getType();
+        List<OFAction> getActions();
+        Builder setActions(List<OFAction> actions);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionWriteMetadata.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionWriteMetadata.java
new file mode 100644
index 0000000..4706932
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructionWriteMetadata.java
@@ -0,0 +1,46 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionWriteMetadata extends OFObject, OFInstruction {
+    OFInstructionType getType();
+    U64 getMetadata();
+    U64 getMetadataMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstruction.Builder {
+        OFInstructionWriteMetadata build();
+        OFInstructionType getType();
+        U64 getMetadata();
+        Builder setMetadata(U64 metadata);
+        U64 getMetadataMask();
+        Builder setMetadataMask(U64 metadataMask);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructions.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructions.java
new file mode 100644
index 0000000..fe09c2c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instruction/OFInstructions.java
@@ -0,0 +1,55 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_factory_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instruction;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.List;
+
+public interface OFInstructions {
+    // Subfactories
+
+    OFInstructionApplyActions.Builder buildApplyActions() throws UnsupportedOperationException;
+    OFInstructionApplyActions applyActions(List<OFAction> actions);
+    OFInstructionClearActions clearActions();
+    OFInstructionGotoTable.Builder buildGotoTable() throws UnsupportedOperationException;
+    OFInstructionGotoTable gotoTable(TableId tableId);
+    OFInstructionWriteActions.Builder buildWriteActions() throws UnsupportedOperationException;
+    OFInstructionWriteActions writeActions(List<OFAction> actions);
+    OFInstructionWriteMetadata.Builder buildWriteMetadata() throws UnsupportedOperationException;
+    OFInstructionWriteMetadata writeMetadata(U64 metadata, U64 metadataMask);
+    OFInstructionBsnArpOffload bsnArpOffload();
+    OFInstructionBsnDeny bsnDeny();
+    OFInstructionBsnDhcpOffload bsnDhcpOffload();
+    OFInstructionBsnDisableSplitHorizonCheck bsnDisableSplitHorizonCheck();
+    OFInstructionBsnDisableSrcMacCheck bsnDisableSrcMacCheck();
+    OFInstructionBsnDisableVlanCounters bsnDisableVlanCounters();
+    OFInstructionBsnPacketOfDeath bsnPacketOfDeath();
+    OFInstructionBsnPermit bsnPermit();
+    OFInstructionBsnPrioritizePdus bsnPrioritizePdus();
+    OFInstructionBsnRequireVlanXlate bsnRequireVlanXlate();
+    OFInstructionMeter.Builder buildMeter() throws UnsupportedOperationException;
+    OFInstructionMeter meter(long meterId);
+
+    OFMessageReader<OFInstruction> getReader();
+    OFVersion getVersion();
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionId.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionId.java
new file mode 100644
index 0000000..906401c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionId.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionId extends OFObject {
+    OFInstructionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFInstructionId build();
+        OFInstructionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdApplyActions.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdApplyActions.java
new file mode 100644
index 0000000..8d37525
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdApplyActions.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdApplyActions extends OFObject, OFInstructionId {
+    OFInstructionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionId.Builder {
+        OFInstructionIdApplyActions build();
+        OFInstructionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsn.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsn.java
new file mode 100644
index 0000000..7114df8
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsn.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdBsn extends OFObject, OFInstructionIdExperimenter {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionIdExperimenter.Builder {
+        OFInstructionIdBsn build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnArpOffload.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnArpOffload.java
new file mode 100644
index 0000000..c669714
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnArpOffload.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdBsnArpOffload extends OFObject, OFInstructionIdBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionIdBsn.Builder {
+        OFInstructionIdBsnArpOffload build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnDeny.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnDeny.java
new file mode 100644
index 0000000..5f4f489
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnDeny.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdBsnDeny extends OFObject, OFInstructionIdBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionIdBsn.Builder {
+        OFInstructionIdBsnDeny build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnDhcpOffload.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnDhcpOffload.java
new file mode 100644
index 0000000..43e6fc8
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnDhcpOffload.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdBsnDhcpOffload extends OFObject, OFInstructionIdBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionIdBsn.Builder {
+        OFInstructionIdBsnDhcpOffload build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnDisableSplitHorizonCheck.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnDisableSplitHorizonCheck.java
new file mode 100644
index 0000000..57fc457
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnDisableSplitHorizonCheck.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdBsnDisableSplitHorizonCheck extends OFObject, OFInstructionIdBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionIdBsn.Builder {
+        OFInstructionIdBsnDisableSplitHorizonCheck build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnDisableSrcMacCheck.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnDisableSrcMacCheck.java
new file mode 100644
index 0000000..7b92fbc
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnDisableSrcMacCheck.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdBsnDisableSrcMacCheck extends OFObject, OFInstructionIdBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionIdBsn.Builder {
+        OFInstructionIdBsnDisableSrcMacCheck build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnDisableVlanCounters.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnDisableVlanCounters.java
new file mode 100644
index 0000000..1e1366a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnDisableVlanCounters.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdBsnDisableVlanCounters extends OFObject, OFInstructionIdBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionIdBsn.Builder {
+        OFInstructionIdBsnDisableVlanCounters build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnPacketOfDeath.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnPacketOfDeath.java
new file mode 100644
index 0000000..a38265e
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnPacketOfDeath.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdBsnPacketOfDeath extends OFObject, OFInstructionIdBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionIdBsn.Builder {
+        OFInstructionIdBsnPacketOfDeath build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnPermit.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnPermit.java
new file mode 100644
index 0000000..a499743
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnPermit.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdBsnPermit extends OFObject, OFInstructionIdBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionIdBsn.Builder {
+        OFInstructionIdBsnPermit build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnPrioritizePdus.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnPrioritizePdus.java
new file mode 100644
index 0000000..08f1e7e
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnPrioritizePdus.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdBsnPrioritizePdus extends OFObject, OFInstructionIdBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionIdBsn.Builder {
+        OFInstructionIdBsnPrioritizePdus build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnRequireVlanXlate.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnRequireVlanXlate.java
new file mode 100644
index 0000000..f6b9dc9
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdBsnRequireVlanXlate.java
@@ -0,0 +1,44 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdBsnRequireVlanXlate extends OFObject, OFInstructionIdBsn {
+    OFInstructionType getType();
+    long getExperimenter();
+    long getSubtype();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionIdBsn.Builder {
+        OFInstructionIdBsnRequireVlanXlate build();
+        OFInstructionType getType();
+        long getExperimenter();
+        long getSubtype();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdClearActions.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdClearActions.java
new file mode 100644
index 0000000..8c7c1d7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdClearActions.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdClearActions extends OFObject, OFInstructionId {
+    OFInstructionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionId.Builder {
+        OFInstructionIdClearActions build();
+        OFInstructionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdExperimenter.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdExperimenter.java
new file mode 100644
index 0000000..d54f3f9
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdExperimenter.java
@@ -0,0 +1,42 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdExperimenter extends OFObject, OFInstructionId {
+    OFInstructionType getType();
+    long getExperimenter();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionId.Builder {
+        OFInstructionIdExperimenter build();
+        OFInstructionType getType();
+        long getExperimenter();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdGotoTable.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdGotoTable.java
new file mode 100644
index 0000000..4e12baa
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdGotoTable.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdGotoTable extends OFObject, OFInstructionId {
+    OFInstructionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionId.Builder {
+        OFInstructionIdGotoTable build();
+        OFInstructionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdMeter.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdMeter.java
new file mode 100644
index 0000000..277ab6e
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdMeter.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdMeter extends OFObject, OFInstructionId {
+    OFInstructionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionId.Builder {
+        OFInstructionIdMeter build();
+        OFInstructionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdWriteActions.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdWriteActions.java
new file mode 100644
index 0000000..13b7dee
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdWriteActions.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdWriteActions extends OFObject, OFInstructionId {
+    OFInstructionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionId.Builder {
+        OFInstructionIdWriteActions build();
+        OFInstructionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdWriteMetadata.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdWriteMetadata.java
new file mode 100644
index 0000000..96ea693
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIdWriteMetadata.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFInstructionIdWriteMetadata extends OFObject, OFInstructionId {
+    OFInstructionType getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFInstructionId.Builder {
+        OFInstructionIdWriteMetadata build();
+        OFInstructionType getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIds.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIds.java
new file mode 100644
index 0000000..901b87a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/instructionid/OFInstructionIds.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_factory_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.instructionid;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public interface OFInstructionIds {
+    // Subfactories
+
+    OFInstructionIdApplyActions applyActions();
+    OFInstructionIdBsnArpOffload bsnArpOffload();
+    OFInstructionIdBsnDeny bsnDeny();
+    OFInstructionIdBsnDhcpOffload bsnDhcpOffload();
+    OFInstructionIdBsnDisableSplitHorizonCheck bsnDisableSplitHorizonCheck();
+    OFInstructionIdBsnDisableSrcMacCheck bsnDisableSrcMacCheck();
+    OFInstructionIdBsnDisableVlanCounters bsnDisableVlanCounters();
+    OFInstructionIdBsnPacketOfDeath bsnPacketOfDeath();
+    OFInstructionIdBsnPermit bsnPermit();
+    OFInstructionIdBsnPrioritizePdus bsnPrioritizePdus();
+    OFInstructionIdBsnRequireVlanXlate bsnRequireVlanXlate();
+    OFInstructionIdClearActions clearActions();
+    OFInstructionIdGotoTable gotoTable();
+    OFInstructionIdMeter meter();
+    OFInstructionIdWriteActions writeActions();
+    OFInstructionIdWriteMetadata writeMetadata();
+
+    OFMessageReader<OFInstructionId> getReader();
+    OFVersion getVersion();
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/meterband/OFMeterBand.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/meterband/OFMeterBand.java
new file mode 100644
index 0000000..51edbfc
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/meterband/OFMeterBand.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.meterband;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMeterBand extends OFObject {
+    int getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFMeterBand build();
+        int getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/meterband/OFMeterBandDrop.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/meterband/OFMeterBandDrop.java
new file mode 100644
index 0000000..701ac61
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/meterband/OFMeterBandDrop.java
@@ -0,0 +1,46 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.meterband;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMeterBandDrop extends OFObject, OFMeterBand {
+    int getType();
+    long getRate();
+    long getBurstSize();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMeterBand.Builder {
+        OFMeterBandDrop build();
+        int getType();
+        long getRate();
+        Builder setRate(long rate);
+        long getBurstSize();
+        Builder setBurstSize(long burstSize);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/meterband/OFMeterBandDscpRemark.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/meterband/OFMeterBandDscpRemark.java
new file mode 100644
index 0000000..8bb096d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/meterband/OFMeterBandDscpRemark.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.meterband;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMeterBandDscpRemark extends OFObject, OFMeterBand {
+    int getType();
+    long getRate();
+    long getBurstSize();
+    short getPrecLevel();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMeterBand.Builder {
+        OFMeterBandDscpRemark build();
+        int getType();
+        long getRate();
+        Builder setRate(long rate);
+        long getBurstSize();
+        Builder setBurstSize(long burstSize);
+        short getPrecLevel();
+        Builder setPrecLevel(short precLevel);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/meterband/OFMeterBandExperimenter.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/meterband/OFMeterBandExperimenter.java
new file mode 100644
index 0000000..f621170
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/meterband/OFMeterBandExperimenter.java
@@ -0,0 +1,49 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.meterband;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFMeterBandExperimenter extends OFObject, OFMeterBand {
+    int getType();
+    long getRate();
+    long getBurstSize();
+    long getExperimenter();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFMeterBand.Builder {
+        OFMeterBandExperimenter build();
+        int getType();
+        long getRate();
+        Builder setRate(long rate);
+        long getBurstSize();
+        Builder setBurstSize(long burstSize);
+        long getExperimenter();
+        Builder setExperimenter(long experimenter);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/meterband/OFMeterBands.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/meterband/OFMeterBands.java
new file mode 100644
index 0000000..52e6181
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/meterband/OFMeterBands.java
@@ -0,0 +1,37 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_factory_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.meterband;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public interface OFMeterBands {
+    // Subfactories
+
+    OFMeterBandDrop.Builder buildDrop() throws UnsupportedOperationException;
+    OFMeterBandDrop drop(long rate, long burstSize);
+    OFMeterBandDscpRemark.Builder buildDscpRemark() throws UnsupportedOperationException;
+    OFMeterBandExperimenter.Builder buildExperimenter() throws UnsupportedOperationException;
+
+    OFMessageReader<OFMeterBand> getReader();
+    OFVersion getVersion();
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxm.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxm.java
new file mode 100644
index 0000000..d14aa42
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxm.java
@@ -0,0 +1,50 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxm<T extends OFValueType<T>> extends OFObject {
+    long getTypeLen();
+    T getValue();
+    T getMask();
+    MatchField<T> getMatchField();
+    boolean isMasked();
+    OFOxm<T> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder<T> createBuilder();
+    public interface Builder<T extends OFValueType<T>>  {
+        OFOxm<T> build();
+        long getTypeLen();
+        T getValue();
+        T getMask();
+        MatchField<T> getMatchField();
+        boolean isMasked();
+        OFOxm<T> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpOp.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpOp.java
new file mode 100644
index 0000000..5526177
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpOp.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmArpOp extends OFObject, OFOxm<ArpOpcode> {
+    long getTypeLen();
+    ArpOpcode getValue();
+    MatchField<ArpOpcode> getMatchField();
+    boolean isMasked();
+    OFOxm<ArpOpcode> getCanonical();
+    ArpOpcode getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<ArpOpcode> {
+        OFOxmArpOp build();
+        long getTypeLen();
+        ArpOpcode getValue();
+        Builder setValue(ArpOpcode value);
+        MatchField<ArpOpcode> getMatchField();
+        boolean isMasked();
+        OFOxm<ArpOpcode> getCanonical();
+        ArpOpcode getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpOpMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpOpMasked.java
new file mode 100644
index 0000000..92e0b8a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpOpMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmArpOpMasked extends OFObject, OFOxm<ArpOpcode> {
+    long getTypeLen();
+    ArpOpcode getValue();
+    ArpOpcode getMask();
+    MatchField<ArpOpcode> getMatchField();
+    boolean isMasked();
+    OFOxm<ArpOpcode> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<ArpOpcode> {
+        OFOxmArpOpMasked build();
+        long getTypeLen();
+        ArpOpcode getValue();
+        Builder setValue(ArpOpcode value);
+        ArpOpcode getMask();
+        Builder setMask(ArpOpcode mask);
+        MatchField<ArpOpcode> getMatchField();
+        boolean isMasked();
+        OFOxm<ArpOpcode> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpSha.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpSha.java
new file mode 100644
index 0000000..dcb5a02
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpSha.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmArpSha extends OFObject, OFOxm<MacAddress> {
+    long getTypeLen();
+    MacAddress getValue();
+    MatchField<MacAddress> getMatchField();
+    boolean isMasked();
+    OFOxm<MacAddress> getCanonical();
+    MacAddress getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<MacAddress> {
+        OFOxmArpSha build();
+        long getTypeLen();
+        MacAddress getValue();
+        Builder setValue(MacAddress value);
+        MatchField<MacAddress> getMatchField();
+        boolean isMasked();
+        OFOxm<MacAddress> getCanonical();
+        MacAddress getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpShaMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpShaMasked.java
new file mode 100644
index 0000000..210fe89
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpShaMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmArpShaMasked extends OFObject, OFOxm<MacAddress> {
+    long getTypeLen();
+    MacAddress getValue();
+    MacAddress getMask();
+    MatchField<MacAddress> getMatchField();
+    boolean isMasked();
+    OFOxm<MacAddress> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<MacAddress> {
+        OFOxmArpShaMasked build();
+        long getTypeLen();
+        MacAddress getValue();
+        Builder setValue(MacAddress value);
+        MacAddress getMask();
+        Builder setMask(MacAddress mask);
+        MatchField<MacAddress> getMatchField();
+        boolean isMasked();
+        OFOxm<MacAddress> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpSpa.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpSpa.java
new file mode 100644
index 0000000..0b2cab1
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpSpa.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmArpSpa extends OFObject, OFOxm<IPv4Address> {
+    long getTypeLen();
+    IPv4Address getValue();
+    MatchField<IPv4Address> getMatchField();
+    boolean isMasked();
+    OFOxm<IPv4Address> getCanonical();
+    IPv4Address getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IPv4Address> {
+        OFOxmArpSpa build();
+        long getTypeLen();
+        IPv4Address getValue();
+        Builder setValue(IPv4Address value);
+        MatchField<IPv4Address> getMatchField();
+        boolean isMasked();
+        OFOxm<IPv4Address> getCanonical();
+        IPv4Address getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpSpaMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpSpaMasked.java
new file mode 100644
index 0000000..023fcb2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpSpaMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmArpSpaMasked extends OFObject, OFOxm<IPv4Address> {
+    long getTypeLen();
+    IPv4Address getValue();
+    IPv4Address getMask();
+    MatchField<IPv4Address> getMatchField();
+    boolean isMasked();
+    OFOxm<IPv4Address> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IPv4Address> {
+        OFOxmArpSpaMasked build();
+        long getTypeLen();
+        IPv4Address getValue();
+        Builder setValue(IPv4Address value);
+        IPv4Address getMask();
+        Builder setMask(IPv4Address mask);
+        MatchField<IPv4Address> getMatchField();
+        boolean isMasked();
+        OFOxm<IPv4Address> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpTha.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpTha.java
new file mode 100644
index 0000000..c91c1bc
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpTha.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmArpTha extends OFObject, OFOxm<MacAddress> {
+    long getTypeLen();
+    MacAddress getValue();
+    MatchField<MacAddress> getMatchField();
+    boolean isMasked();
+    OFOxm<MacAddress> getCanonical();
+    MacAddress getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<MacAddress> {
+        OFOxmArpTha build();
+        long getTypeLen();
+        MacAddress getValue();
+        Builder setValue(MacAddress value);
+        MatchField<MacAddress> getMatchField();
+        boolean isMasked();
+        OFOxm<MacAddress> getCanonical();
+        MacAddress getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpThaMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpThaMasked.java
new file mode 100644
index 0000000..e24bd33
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpThaMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmArpThaMasked extends OFObject, OFOxm<MacAddress> {
+    long getTypeLen();
+    MacAddress getValue();
+    MacAddress getMask();
+    MatchField<MacAddress> getMatchField();
+    boolean isMasked();
+    OFOxm<MacAddress> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<MacAddress> {
+        OFOxmArpThaMasked build();
+        long getTypeLen();
+        MacAddress getValue();
+        Builder setValue(MacAddress value);
+        MacAddress getMask();
+        Builder setMask(MacAddress mask);
+        MatchField<MacAddress> getMatchField();
+        boolean isMasked();
+        OFOxm<MacAddress> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpTpa.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpTpa.java
new file mode 100644
index 0000000..3ea1500
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpTpa.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmArpTpa extends OFObject, OFOxm<IPv4Address> {
+    long getTypeLen();
+    IPv4Address getValue();
+    MatchField<IPv4Address> getMatchField();
+    boolean isMasked();
+    OFOxm<IPv4Address> getCanonical();
+    IPv4Address getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IPv4Address> {
+        OFOxmArpTpa build();
+        long getTypeLen();
+        IPv4Address getValue();
+        Builder setValue(IPv4Address value);
+        MatchField<IPv4Address> getMatchField();
+        boolean isMasked();
+        OFOxm<IPv4Address> getCanonical();
+        IPv4Address getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpTpaMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpTpaMasked.java
new file mode 100644
index 0000000..81501a7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmArpTpaMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmArpTpaMasked extends OFObject, OFOxm<IPv4Address> {
+    long getTypeLen();
+    IPv4Address getValue();
+    IPv4Address getMask();
+    MatchField<IPv4Address> getMatchField();
+    boolean isMasked();
+    OFOxm<IPv4Address> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IPv4Address> {
+        OFOxmArpTpaMasked build();
+        long getTypeLen();
+        IPv4Address getValue();
+        Builder setValue(IPv4Address value);
+        IPv4Address getMask();
+        Builder setMask(IPv4Address mask);
+        MatchField<IPv4Address> getMatchField();
+        boolean isMasked();
+        OFOxm<IPv4Address> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnEgrPortGroupId.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnEgrPortGroupId.java
new file mode 100644
index 0000000..b23df57
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnEgrPortGroupId.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnEgrPortGroupId extends OFObject, OFOxm<ClassId> {
+    long getTypeLen();
+    ClassId getValue();
+    MatchField<ClassId> getMatchField();
+    boolean isMasked();
+    OFOxm<ClassId> getCanonical();
+    ClassId getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<ClassId> {
+        OFOxmBsnEgrPortGroupId build();
+        long getTypeLen();
+        ClassId getValue();
+        Builder setValue(ClassId value);
+        MatchField<ClassId> getMatchField();
+        boolean isMasked();
+        OFOxm<ClassId> getCanonical();
+        ClassId getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnEgrPortGroupIdMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnEgrPortGroupIdMasked.java
new file mode 100644
index 0000000..055fd7a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnEgrPortGroupIdMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnEgrPortGroupIdMasked extends OFObject, OFOxm<ClassId> {
+    long getTypeLen();
+    ClassId getValue();
+    ClassId getMask();
+    MatchField<ClassId> getMatchField();
+    boolean isMasked();
+    OFOxm<ClassId> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<ClassId> {
+        OFOxmBsnEgrPortGroupIdMasked build();
+        long getTypeLen();
+        ClassId getValue();
+        Builder setValue(ClassId value);
+        ClassId getMask();
+        Builder setMask(ClassId mask);
+        MatchField<ClassId> getMatchField();
+        boolean isMasked();
+        OFOxm<ClassId> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnGlobalVrfAllowed.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnGlobalVrfAllowed.java
new file mode 100644
index 0000000..b56e34c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnGlobalVrfAllowed.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnGlobalVrfAllowed extends OFObject, OFOxm<OFBooleanValue> {
+    long getTypeLen();
+    OFBooleanValue getValue();
+    MatchField<OFBooleanValue> getMatchField();
+    boolean isMasked();
+    OFOxm<OFBooleanValue> getCanonical();
+    OFBooleanValue getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<OFBooleanValue> {
+        OFOxmBsnGlobalVrfAllowed build();
+        long getTypeLen();
+        OFBooleanValue getValue();
+        Builder setValue(OFBooleanValue value);
+        MatchField<OFBooleanValue> getMatchField();
+        boolean isMasked();
+        OFOxm<OFBooleanValue> getCanonical();
+        OFBooleanValue getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnGlobalVrfAllowedMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnGlobalVrfAllowedMasked.java
new file mode 100644
index 0000000..7b5c7d7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnGlobalVrfAllowedMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnGlobalVrfAllowedMasked extends OFObject, OFOxm<OFBooleanValue> {
+    long getTypeLen();
+    OFBooleanValue getValue();
+    OFBooleanValue getMask();
+    MatchField<OFBooleanValue> getMatchField();
+    boolean isMasked();
+    OFOxm<OFBooleanValue> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<OFBooleanValue> {
+        OFOxmBsnGlobalVrfAllowedMasked build();
+        long getTypeLen();
+        OFBooleanValue getValue();
+        Builder setValue(OFBooleanValue value);
+        OFBooleanValue getMask();
+        Builder setMask(OFBooleanValue mask);
+        MatchField<OFBooleanValue> getMatchField();
+        boolean isMasked();
+        OFOxm<OFBooleanValue> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnInPorts128.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnInPorts128.java
new file mode 100644
index 0000000..42a86ff
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnInPorts128.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnInPorts128 extends OFObject, OFOxm<OFBitMask128> {
+    long getTypeLen();
+    OFBitMask128 getValue();
+    MatchField<OFBitMask128> getMatchField();
+    boolean isMasked();
+    OFOxm<OFBitMask128> getCanonical();
+    OFBitMask128 getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<OFBitMask128> {
+        OFOxmBsnInPorts128 build();
+        long getTypeLen();
+        OFBitMask128 getValue();
+        Builder setValue(OFBitMask128 value);
+        MatchField<OFBitMask128> getMatchField();
+        boolean isMasked();
+        OFOxm<OFBitMask128> getCanonical();
+        OFBitMask128 getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnInPorts128Masked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnInPorts128Masked.java
new file mode 100644
index 0000000..9826f7a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnInPorts128Masked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnInPorts128Masked extends OFObject, OFOxm<OFBitMask128> {
+    long getTypeLen();
+    OFBitMask128 getValue();
+    OFBitMask128 getMask();
+    MatchField<OFBitMask128> getMatchField();
+    boolean isMasked();
+    OFOxm<OFBitMask128> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<OFBitMask128> {
+        OFOxmBsnInPorts128Masked build();
+        long getTypeLen();
+        OFBitMask128 getValue();
+        Builder setValue(OFBitMask128 value);
+        OFBitMask128 getMask();
+        Builder setMask(OFBitMask128 mask);
+        MatchField<OFBitMask128> getMatchField();
+        boolean isMasked();
+        OFOxm<OFBitMask128> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3DstClassId.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3DstClassId.java
new file mode 100644
index 0000000..b587941
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3DstClassId.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnL3DstClassId extends OFObject, OFOxm<ClassId> {
+    long getTypeLen();
+    ClassId getValue();
+    MatchField<ClassId> getMatchField();
+    boolean isMasked();
+    OFOxm<ClassId> getCanonical();
+    ClassId getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<ClassId> {
+        OFOxmBsnL3DstClassId build();
+        long getTypeLen();
+        ClassId getValue();
+        Builder setValue(ClassId value);
+        MatchField<ClassId> getMatchField();
+        boolean isMasked();
+        OFOxm<ClassId> getCanonical();
+        ClassId getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3DstClassIdMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3DstClassIdMasked.java
new file mode 100644
index 0000000..b3619d0
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3DstClassIdMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnL3DstClassIdMasked extends OFObject, OFOxm<ClassId> {
+    long getTypeLen();
+    ClassId getValue();
+    ClassId getMask();
+    MatchField<ClassId> getMatchField();
+    boolean isMasked();
+    OFOxm<ClassId> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<ClassId> {
+        OFOxmBsnL3DstClassIdMasked build();
+        long getTypeLen();
+        ClassId getValue();
+        Builder setValue(ClassId value);
+        ClassId getMask();
+        Builder setMask(ClassId mask);
+        MatchField<ClassId> getMatchField();
+        boolean isMasked();
+        OFOxm<ClassId> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3InterfaceClassId.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3InterfaceClassId.java
new file mode 100644
index 0000000..2ab08da
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3InterfaceClassId.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnL3InterfaceClassId extends OFObject, OFOxm<ClassId> {
+    long getTypeLen();
+    ClassId getValue();
+    MatchField<ClassId> getMatchField();
+    boolean isMasked();
+    OFOxm<ClassId> getCanonical();
+    ClassId getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<ClassId> {
+        OFOxmBsnL3InterfaceClassId build();
+        long getTypeLen();
+        ClassId getValue();
+        Builder setValue(ClassId value);
+        MatchField<ClassId> getMatchField();
+        boolean isMasked();
+        OFOxm<ClassId> getCanonical();
+        ClassId getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3InterfaceClassIdMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3InterfaceClassIdMasked.java
new file mode 100644
index 0000000..5dbc3c2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3InterfaceClassIdMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnL3InterfaceClassIdMasked extends OFObject, OFOxm<ClassId> {
+    long getTypeLen();
+    ClassId getValue();
+    ClassId getMask();
+    MatchField<ClassId> getMatchField();
+    boolean isMasked();
+    OFOxm<ClassId> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<ClassId> {
+        OFOxmBsnL3InterfaceClassIdMasked build();
+        long getTypeLen();
+        ClassId getValue();
+        Builder setValue(ClassId value);
+        ClassId getMask();
+        Builder setMask(ClassId mask);
+        MatchField<ClassId> getMatchField();
+        boolean isMasked();
+        OFOxm<ClassId> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3SrcClassId.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3SrcClassId.java
new file mode 100644
index 0000000..0202270
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3SrcClassId.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnL3SrcClassId extends OFObject, OFOxm<ClassId> {
+    long getTypeLen();
+    ClassId getValue();
+    MatchField<ClassId> getMatchField();
+    boolean isMasked();
+    OFOxm<ClassId> getCanonical();
+    ClassId getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<ClassId> {
+        OFOxmBsnL3SrcClassId build();
+        long getTypeLen();
+        ClassId getValue();
+        Builder setValue(ClassId value);
+        MatchField<ClassId> getMatchField();
+        boolean isMasked();
+        OFOxm<ClassId> getCanonical();
+        ClassId getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3SrcClassIdMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3SrcClassIdMasked.java
new file mode 100644
index 0000000..06adca0
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnL3SrcClassIdMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnL3SrcClassIdMasked extends OFObject, OFOxm<ClassId> {
+    long getTypeLen();
+    ClassId getValue();
+    ClassId getMask();
+    MatchField<ClassId> getMatchField();
+    boolean isMasked();
+    OFOxm<ClassId> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<ClassId> {
+        OFOxmBsnL3SrcClassIdMasked build();
+        long getTypeLen();
+        ClassId getValue();
+        Builder setValue(ClassId value);
+        ClassId getMask();
+        Builder setMask(ClassId mask);
+        MatchField<ClassId> getMatchField();
+        boolean isMasked();
+        OFOxm<ClassId> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnLagId.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnLagId.java
new file mode 100644
index 0000000..c8c73f6
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnLagId.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnLagId extends OFObject, OFOxm<LagId> {
+    long getTypeLen();
+    LagId getValue();
+    MatchField<LagId> getMatchField();
+    boolean isMasked();
+    OFOxm<LagId> getCanonical();
+    LagId getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<LagId> {
+        OFOxmBsnLagId build();
+        long getTypeLen();
+        LagId getValue();
+        Builder setValue(LagId value);
+        MatchField<LagId> getMatchField();
+        boolean isMasked();
+        OFOxm<LagId> getCanonical();
+        LagId getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnLagIdMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnLagIdMasked.java
new file mode 100644
index 0000000..6b117dd
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnLagIdMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnLagIdMasked extends OFObject, OFOxm<LagId> {
+    long getTypeLen();
+    LagId getValue();
+    LagId getMask();
+    MatchField<LagId> getMatchField();
+    boolean isMasked();
+    OFOxm<LagId> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<LagId> {
+        OFOxmBsnLagIdMasked build();
+        long getTypeLen();
+        LagId getValue();
+        Builder setValue(LagId value);
+        LagId getMask();
+        Builder setMask(LagId mask);
+        MatchField<LagId> getMatchField();
+        boolean isMasked();
+        OFOxm<LagId> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnTcpFlags.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnTcpFlags.java
new file mode 100644
index 0000000..c1a31d1
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnTcpFlags.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnTcpFlags extends OFObject, OFOxm<U16> {
+    long getTypeLen();
+    U16 getValue();
+    MatchField<U16> getMatchField();
+    boolean isMasked();
+    OFOxm<U16> getCanonical();
+    U16 getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<U16> {
+        OFOxmBsnTcpFlags build();
+        long getTypeLen();
+        U16 getValue();
+        Builder setValue(U16 value);
+        MatchField<U16> getMatchField();
+        boolean isMasked();
+        OFOxm<U16> getCanonical();
+        U16 getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnTcpFlagsMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnTcpFlagsMasked.java
new file mode 100644
index 0000000..694c8b3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnTcpFlagsMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnTcpFlagsMasked extends OFObject, OFOxm<U16> {
+    long getTypeLen();
+    U16 getValue();
+    U16 getMask();
+    MatchField<U16> getMatchField();
+    boolean isMasked();
+    OFOxm<U16> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<U16> {
+        OFOxmBsnTcpFlagsMasked build();
+        long getTypeLen();
+        U16 getValue();
+        Builder setValue(U16 value);
+        U16 getMask();
+        Builder setMask(U16 mask);
+        MatchField<U16> getMatchField();
+        boolean isMasked();
+        OFOxm<U16> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf0.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf0.java
new file mode 100644
index 0000000..7143e5a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf0.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnUdf0 extends OFObject, OFOxm<UDF> {
+    long getTypeLen();
+    UDF getValue();
+    MatchField<UDF> getMatchField();
+    boolean isMasked();
+    OFOxm<UDF> getCanonical();
+    UDF getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<UDF> {
+        OFOxmBsnUdf0 build();
+        long getTypeLen();
+        UDF getValue();
+        Builder setValue(UDF value);
+        MatchField<UDF> getMatchField();
+        boolean isMasked();
+        OFOxm<UDF> getCanonical();
+        UDF getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf0Masked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf0Masked.java
new file mode 100644
index 0000000..ee1c5ff
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf0Masked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnUdf0Masked extends OFObject, OFOxm<UDF> {
+    long getTypeLen();
+    UDF getValue();
+    UDF getMask();
+    MatchField<UDF> getMatchField();
+    boolean isMasked();
+    OFOxm<UDF> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<UDF> {
+        OFOxmBsnUdf0Masked build();
+        long getTypeLen();
+        UDF getValue();
+        Builder setValue(UDF value);
+        UDF getMask();
+        Builder setMask(UDF mask);
+        MatchField<UDF> getMatchField();
+        boolean isMasked();
+        OFOxm<UDF> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf1.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf1.java
new file mode 100644
index 0000000..e45f0b3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf1.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnUdf1 extends OFObject, OFOxm<UDF> {
+    long getTypeLen();
+    UDF getValue();
+    MatchField<UDF> getMatchField();
+    boolean isMasked();
+    OFOxm<UDF> getCanonical();
+    UDF getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<UDF> {
+        OFOxmBsnUdf1 build();
+        long getTypeLen();
+        UDF getValue();
+        Builder setValue(UDF value);
+        MatchField<UDF> getMatchField();
+        boolean isMasked();
+        OFOxm<UDF> getCanonical();
+        UDF getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf1Masked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf1Masked.java
new file mode 100644
index 0000000..e28f8e2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf1Masked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnUdf1Masked extends OFObject, OFOxm<UDF> {
+    long getTypeLen();
+    UDF getValue();
+    UDF getMask();
+    MatchField<UDF> getMatchField();
+    boolean isMasked();
+    OFOxm<UDF> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<UDF> {
+        OFOxmBsnUdf1Masked build();
+        long getTypeLen();
+        UDF getValue();
+        Builder setValue(UDF value);
+        UDF getMask();
+        Builder setMask(UDF mask);
+        MatchField<UDF> getMatchField();
+        boolean isMasked();
+        OFOxm<UDF> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf2.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf2.java
new file mode 100644
index 0000000..dea445d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf2.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnUdf2 extends OFObject, OFOxm<UDF> {
+    long getTypeLen();
+    UDF getValue();
+    MatchField<UDF> getMatchField();
+    boolean isMasked();
+    OFOxm<UDF> getCanonical();
+    UDF getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<UDF> {
+        OFOxmBsnUdf2 build();
+        long getTypeLen();
+        UDF getValue();
+        Builder setValue(UDF value);
+        MatchField<UDF> getMatchField();
+        boolean isMasked();
+        OFOxm<UDF> getCanonical();
+        UDF getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf2Masked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf2Masked.java
new file mode 100644
index 0000000..549d930
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf2Masked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnUdf2Masked extends OFObject, OFOxm<UDF> {
+    long getTypeLen();
+    UDF getValue();
+    UDF getMask();
+    MatchField<UDF> getMatchField();
+    boolean isMasked();
+    OFOxm<UDF> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<UDF> {
+        OFOxmBsnUdf2Masked build();
+        long getTypeLen();
+        UDF getValue();
+        Builder setValue(UDF value);
+        UDF getMask();
+        Builder setMask(UDF mask);
+        MatchField<UDF> getMatchField();
+        boolean isMasked();
+        OFOxm<UDF> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf3.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf3.java
new file mode 100644
index 0000000..094b197
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf3.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnUdf3 extends OFObject, OFOxm<UDF> {
+    long getTypeLen();
+    UDF getValue();
+    MatchField<UDF> getMatchField();
+    boolean isMasked();
+    OFOxm<UDF> getCanonical();
+    UDF getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<UDF> {
+        OFOxmBsnUdf3 build();
+        long getTypeLen();
+        UDF getValue();
+        Builder setValue(UDF value);
+        MatchField<UDF> getMatchField();
+        boolean isMasked();
+        OFOxm<UDF> getCanonical();
+        UDF getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf3Masked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf3Masked.java
new file mode 100644
index 0000000..0a5a77f
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf3Masked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnUdf3Masked extends OFObject, OFOxm<UDF> {
+    long getTypeLen();
+    UDF getValue();
+    UDF getMask();
+    MatchField<UDF> getMatchField();
+    boolean isMasked();
+    OFOxm<UDF> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<UDF> {
+        OFOxmBsnUdf3Masked build();
+        long getTypeLen();
+        UDF getValue();
+        Builder setValue(UDF value);
+        UDF getMask();
+        Builder setMask(UDF mask);
+        MatchField<UDF> getMatchField();
+        boolean isMasked();
+        OFOxm<UDF> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf4.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf4.java
new file mode 100644
index 0000000..d7ea548
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf4.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnUdf4 extends OFObject, OFOxm<UDF> {
+    long getTypeLen();
+    UDF getValue();
+    MatchField<UDF> getMatchField();
+    boolean isMasked();
+    OFOxm<UDF> getCanonical();
+    UDF getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<UDF> {
+        OFOxmBsnUdf4 build();
+        long getTypeLen();
+        UDF getValue();
+        Builder setValue(UDF value);
+        MatchField<UDF> getMatchField();
+        boolean isMasked();
+        OFOxm<UDF> getCanonical();
+        UDF getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf4Masked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf4Masked.java
new file mode 100644
index 0000000..735d3e8
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf4Masked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnUdf4Masked extends OFObject, OFOxm<UDF> {
+    long getTypeLen();
+    UDF getValue();
+    UDF getMask();
+    MatchField<UDF> getMatchField();
+    boolean isMasked();
+    OFOxm<UDF> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<UDF> {
+        OFOxmBsnUdf4Masked build();
+        long getTypeLen();
+        UDF getValue();
+        Builder setValue(UDF value);
+        UDF getMask();
+        Builder setMask(UDF mask);
+        MatchField<UDF> getMatchField();
+        boolean isMasked();
+        OFOxm<UDF> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf5.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf5.java
new file mode 100644
index 0000000..52a0eb0
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf5.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnUdf5 extends OFObject, OFOxm<UDF> {
+    long getTypeLen();
+    UDF getValue();
+    MatchField<UDF> getMatchField();
+    boolean isMasked();
+    OFOxm<UDF> getCanonical();
+    UDF getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<UDF> {
+        OFOxmBsnUdf5 build();
+        long getTypeLen();
+        UDF getValue();
+        Builder setValue(UDF value);
+        MatchField<UDF> getMatchField();
+        boolean isMasked();
+        OFOxm<UDF> getCanonical();
+        UDF getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf5Masked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf5Masked.java
new file mode 100644
index 0000000..138ac18
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf5Masked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnUdf5Masked extends OFObject, OFOxm<UDF> {
+    long getTypeLen();
+    UDF getValue();
+    UDF getMask();
+    MatchField<UDF> getMatchField();
+    boolean isMasked();
+    OFOxm<UDF> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<UDF> {
+        OFOxmBsnUdf5Masked build();
+        long getTypeLen();
+        UDF getValue();
+        Builder setValue(UDF value);
+        UDF getMask();
+        Builder setMask(UDF mask);
+        MatchField<UDF> getMatchField();
+        boolean isMasked();
+        OFOxm<UDF> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf6.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf6.java
new file mode 100644
index 0000000..6d84593
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf6.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnUdf6 extends OFObject, OFOxm<UDF> {
+    long getTypeLen();
+    UDF getValue();
+    MatchField<UDF> getMatchField();
+    boolean isMasked();
+    OFOxm<UDF> getCanonical();
+    UDF getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<UDF> {
+        OFOxmBsnUdf6 build();
+        long getTypeLen();
+        UDF getValue();
+        Builder setValue(UDF value);
+        MatchField<UDF> getMatchField();
+        boolean isMasked();
+        OFOxm<UDF> getCanonical();
+        UDF getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf6Masked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf6Masked.java
new file mode 100644
index 0000000..fd03177
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf6Masked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnUdf6Masked extends OFObject, OFOxm<UDF> {
+    long getTypeLen();
+    UDF getValue();
+    UDF getMask();
+    MatchField<UDF> getMatchField();
+    boolean isMasked();
+    OFOxm<UDF> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<UDF> {
+        OFOxmBsnUdf6Masked build();
+        long getTypeLen();
+        UDF getValue();
+        Builder setValue(UDF value);
+        UDF getMask();
+        Builder setMask(UDF mask);
+        MatchField<UDF> getMatchField();
+        boolean isMasked();
+        OFOxm<UDF> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf7.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf7.java
new file mode 100644
index 0000000..430ec39
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf7.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnUdf7 extends OFObject, OFOxm<UDF> {
+    long getTypeLen();
+    UDF getValue();
+    MatchField<UDF> getMatchField();
+    boolean isMasked();
+    OFOxm<UDF> getCanonical();
+    UDF getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<UDF> {
+        OFOxmBsnUdf7 build();
+        long getTypeLen();
+        UDF getValue();
+        Builder setValue(UDF value);
+        MatchField<UDF> getMatchField();
+        boolean isMasked();
+        OFOxm<UDF> getCanonical();
+        UDF getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf7Masked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf7Masked.java
new file mode 100644
index 0000000..6859ec3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnUdf7Masked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnUdf7Masked extends OFObject, OFOxm<UDF> {
+    long getTypeLen();
+    UDF getValue();
+    UDF getMask();
+    MatchField<UDF> getMatchField();
+    boolean isMasked();
+    OFOxm<UDF> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<UDF> {
+        OFOxmBsnUdf7Masked build();
+        long getTypeLen();
+        UDF getValue();
+        Builder setValue(UDF value);
+        UDF getMask();
+        Builder setMask(UDF mask);
+        MatchField<UDF> getMatchField();
+        boolean isMasked();
+        OFOxm<UDF> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnVlanXlatePortGroupId.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnVlanXlatePortGroupId.java
new file mode 100644
index 0000000..84a94a3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnVlanXlatePortGroupId.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnVlanXlatePortGroupId extends OFObject, OFOxm<ClassId> {
+    long getTypeLen();
+    ClassId getValue();
+    MatchField<ClassId> getMatchField();
+    boolean isMasked();
+    OFOxm<ClassId> getCanonical();
+    ClassId getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<ClassId> {
+        OFOxmBsnVlanXlatePortGroupId build();
+        long getTypeLen();
+        ClassId getValue();
+        Builder setValue(ClassId value);
+        MatchField<ClassId> getMatchField();
+        boolean isMasked();
+        OFOxm<ClassId> getCanonical();
+        ClassId getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnVlanXlatePortGroupIdMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnVlanXlatePortGroupIdMasked.java
new file mode 100644
index 0000000..992bd48
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnVlanXlatePortGroupIdMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnVlanXlatePortGroupIdMasked extends OFObject, OFOxm<ClassId> {
+    long getTypeLen();
+    ClassId getValue();
+    ClassId getMask();
+    MatchField<ClassId> getMatchField();
+    boolean isMasked();
+    OFOxm<ClassId> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<ClassId> {
+        OFOxmBsnVlanXlatePortGroupIdMasked build();
+        long getTypeLen();
+        ClassId getValue();
+        Builder setValue(ClassId value);
+        ClassId getMask();
+        Builder setMask(ClassId mask);
+        MatchField<ClassId> getMatchField();
+        boolean isMasked();
+        OFOxm<ClassId> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnVrf.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnVrf.java
new file mode 100644
index 0000000..b27b0f2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnVrf.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnVrf extends OFObject, OFOxm<VRF> {
+    long getTypeLen();
+    VRF getValue();
+    MatchField<VRF> getMatchField();
+    boolean isMasked();
+    OFOxm<VRF> getCanonical();
+    VRF getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<VRF> {
+        OFOxmBsnVrf build();
+        long getTypeLen();
+        VRF getValue();
+        Builder setValue(VRF value);
+        MatchField<VRF> getMatchField();
+        boolean isMasked();
+        OFOxm<VRF> getCanonical();
+        VRF getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnVrfMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnVrfMasked.java
new file mode 100644
index 0000000..f235551
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmBsnVrfMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmBsnVrfMasked extends OFObject, OFOxm<VRF> {
+    long getTypeLen();
+    VRF getValue();
+    VRF getMask();
+    MatchField<VRF> getMatchField();
+    boolean isMasked();
+    OFOxm<VRF> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<VRF> {
+        OFOxmBsnVrfMasked build();
+        long getTypeLen();
+        VRF getValue();
+        Builder setValue(VRF value);
+        VRF getMask();
+        Builder setMask(VRF mask);
+        MatchField<VRF> getMatchField();
+        boolean isMasked();
+        OFOxm<VRF> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthDst.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthDst.java
new file mode 100644
index 0000000..9c70c2e
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthDst.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmEthDst extends OFObject, OFOxm<MacAddress> {
+    long getTypeLen();
+    MacAddress getValue();
+    MatchField<MacAddress> getMatchField();
+    boolean isMasked();
+    OFOxm<MacAddress> getCanonical();
+    MacAddress getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<MacAddress> {
+        OFOxmEthDst build();
+        long getTypeLen();
+        MacAddress getValue();
+        Builder setValue(MacAddress value);
+        MatchField<MacAddress> getMatchField();
+        boolean isMasked();
+        OFOxm<MacAddress> getCanonical();
+        MacAddress getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthDstMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthDstMasked.java
new file mode 100644
index 0000000..0987c6b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthDstMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmEthDstMasked extends OFObject, OFOxm<MacAddress> {
+    long getTypeLen();
+    MacAddress getValue();
+    MacAddress getMask();
+    MatchField<MacAddress> getMatchField();
+    boolean isMasked();
+    OFOxm<MacAddress> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<MacAddress> {
+        OFOxmEthDstMasked build();
+        long getTypeLen();
+        MacAddress getValue();
+        Builder setValue(MacAddress value);
+        MacAddress getMask();
+        Builder setMask(MacAddress mask);
+        MatchField<MacAddress> getMatchField();
+        boolean isMasked();
+        OFOxm<MacAddress> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthSrc.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthSrc.java
new file mode 100644
index 0000000..7b0920a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthSrc.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmEthSrc extends OFObject, OFOxm<MacAddress> {
+    long getTypeLen();
+    MacAddress getValue();
+    MatchField<MacAddress> getMatchField();
+    boolean isMasked();
+    OFOxm<MacAddress> getCanonical();
+    MacAddress getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<MacAddress> {
+        OFOxmEthSrc build();
+        long getTypeLen();
+        MacAddress getValue();
+        Builder setValue(MacAddress value);
+        MatchField<MacAddress> getMatchField();
+        boolean isMasked();
+        OFOxm<MacAddress> getCanonical();
+        MacAddress getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthSrcMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthSrcMasked.java
new file mode 100644
index 0000000..e869585
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthSrcMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmEthSrcMasked extends OFObject, OFOxm<MacAddress> {
+    long getTypeLen();
+    MacAddress getValue();
+    MacAddress getMask();
+    MatchField<MacAddress> getMatchField();
+    boolean isMasked();
+    OFOxm<MacAddress> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<MacAddress> {
+        OFOxmEthSrcMasked build();
+        long getTypeLen();
+        MacAddress getValue();
+        Builder setValue(MacAddress value);
+        MacAddress getMask();
+        Builder setMask(MacAddress mask);
+        MatchField<MacAddress> getMatchField();
+        boolean isMasked();
+        OFOxm<MacAddress> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthType.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthType.java
new file mode 100644
index 0000000..6d59534
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthType.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmEthType extends OFObject, OFOxm<EthType> {
+    long getTypeLen();
+    EthType getValue();
+    MatchField<EthType> getMatchField();
+    boolean isMasked();
+    OFOxm<EthType> getCanonical();
+    EthType getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<EthType> {
+        OFOxmEthType build();
+        long getTypeLen();
+        EthType getValue();
+        Builder setValue(EthType value);
+        MatchField<EthType> getMatchField();
+        boolean isMasked();
+        OFOxm<EthType> getCanonical();
+        EthType getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthTypeMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthTypeMasked.java
new file mode 100644
index 0000000..9ae2f1f
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmEthTypeMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmEthTypeMasked extends OFObject, OFOxm<EthType> {
+    long getTypeLen();
+    EthType getValue();
+    EthType getMask();
+    MatchField<EthType> getMatchField();
+    boolean isMasked();
+    OFOxm<EthType> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<EthType> {
+        OFOxmEthTypeMasked build();
+        long getTypeLen();
+        EthType getValue();
+        Builder setValue(EthType value);
+        EthType getMask();
+        Builder setMask(EthType mask);
+        MatchField<EthType> getMatchField();
+        boolean isMasked();
+        OFOxm<EthType> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv4Code.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv4Code.java
new file mode 100644
index 0000000..db219a7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv4Code.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIcmpv4Code extends OFObject, OFOxm<ICMPv4Code> {
+    long getTypeLen();
+    ICMPv4Code getValue();
+    MatchField<ICMPv4Code> getMatchField();
+    boolean isMasked();
+    OFOxm<ICMPv4Code> getCanonical();
+    ICMPv4Code getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<ICMPv4Code> {
+        OFOxmIcmpv4Code build();
+        long getTypeLen();
+        ICMPv4Code getValue();
+        Builder setValue(ICMPv4Code value);
+        MatchField<ICMPv4Code> getMatchField();
+        boolean isMasked();
+        OFOxm<ICMPv4Code> getCanonical();
+        ICMPv4Code getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv4CodeMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv4CodeMasked.java
new file mode 100644
index 0000000..2462b45
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv4CodeMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIcmpv4CodeMasked extends OFObject, OFOxm<ICMPv4Code> {
+    long getTypeLen();
+    ICMPv4Code getValue();
+    ICMPv4Code getMask();
+    MatchField<ICMPv4Code> getMatchField();
+    boolean isMasked();
+    OFOxm<ICMPv4Code> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<ICMPv4Code> {
+        OFOxmIcmpv4CodeMasked build();
+        long getTypeLen();
+        ICMPv4Code getValue();
+        Builder setValue(ICMPv4Code value);
+        ICMPv4Code getMask();
+        Builder setMask(ICMPv4Code mask);
+        MatchField<ICMPv4Code> getMatchField();
+        boolean isMasked();
+        OFOxm<ICMPv4Code> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv4Type.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv4Type.java
new file mode 100644
index 0000000..ede641b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv4Type.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIcmpv4Type extends OFObject, OFOxm<ICMPv4Type> {
+    long getTypeLen();
+    ICMPv4Type getValue();
+    MatchField<ICMPv4Type> getMatchField();
+    boolean isMasked();
+    OFOxm<ICMPv4Type> getCanonical();
+    ICMPv4Type getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<ICMPv4Type> {
+        OFOxmIcmpv4Type build();
+        long getTypeLen();
+        ICMPv4Type getValue();
+        Builder setValue(ICMPv4Type value);
+        MatchField<ICMPv4Type> getMatchField();
+        boolean isMasked();
+        OFOxm<ICMPv4Type> getCanonical();
+        ICMPv4Type getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv4TypeMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv4TypeMasked.java
new file mode 100644
index 0000000..7c8f011
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv4TypeMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIcmpv4TypeMasked extends OFObject, OFOxm<ICMPv4Type> {
+    long getTypeLen();
+    ICMPv4Type getValue();
+    ICMPv4Type getMask();
+    MatchField<ICMPv4Type> getMatchField();
+    boolean isMasked();
+    OFOxm<ICMPv4Type> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<ICMPv4Type> {
+        OFOxmIcmpv4TypeMasked build();
+        long getTypeLen();
+        ICMPv4Type getValue();
+        Builder setValue(ICMPv4Type value);
+        ICMPv4Type getMask();
+        Builder setMask(ICMPv4Type mask);
+        MatchField<ICMPv4Type> getMatchField();
+        boolean isMasked();
+        OFOxm<ICMPv4Type> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv6Code.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv6Code.java
new file mode 100644
index 0000000..7ff6ac8
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv6Code.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIcmpv6Code extends OFObject, OFOxm<U8> {
+    long getTypeLen();
+    U8 getValue();
+    MatchField<U8> getMatchField();
+    boolean isMasked();
+    OFOxm<U8> getCanonical();
+    U8 getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<U8> {
+        OFOxmIcmpv6Code build();
+        long getTypeLen();
+        U8 getValue();
+        Builder setValue(U8 value);
+        MatchField<U8> getMatchField();
+        boolean isMasked();
+        OFOxm<U8> getCanonical();
+        U8 getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv6CodeMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv6CodeMasked.java
new file mode 100644
index 0000000..2cf38b3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv6CodeMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIcmpv6CodeMasked extends OFObject, OFOxm<U8> {
+    long getTypeLen();
+    U8 getValue();
+    U8 getMask();
+    MatchField<U8> getMatchField();
+    boolean isMasked();
+    OFOxm<U8> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<U8> {
+        OFOxmIcmpv6CodeMasked build();
+        long getTypeLen();
+        U8 getValue();
+        Builder setValue(U8 value);
+        U8 getMask();
+        Builder setMask(U8 mask);
+        MatchField<U8> getMatchField();
+        boolean isMasked();
+        OFOxm<U8> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv6Type.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv6Type.java
new file mode 100644
index 0000000..de54d1d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv6Type.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIcmpv6Type extends OFObject, OFOxm<U8> {
+    long getTypeLen();
+    U8 getValue();
+    MatchField<U8> getMatchField();
+    boolean isMasked();
+    OFOxm<U8> getCanonical();
+    U8 getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<U8> {
+        OFOxmIcmpv6Type build();
+        long getTypeLen();
+        U8 getValue();
+        Builder setValue(U8 value);
+        MatchField<U8> getMatchField();
+        boolean isMasked();
+        OFOxm<U8> getCanonical();
+        U8 getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv6TypeMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv6TypeMasked.java
new file mode 100644
index 0000000..bb61bd5
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIcmpv6TypeMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIcmpv6TypeMasked extends OFObject, OFOxm<U8> {
+    long getTypeLen();
+    U8 getValue();
+    U8 getMask();
+    MatchField<U8> getMatchField();
+    boolean isMasked();
+    OFOxm<U8> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<U8> {
+        OFOxmIcmpv6TypeMasked build();
+        long getTypeLen();
+        U8 getValue();
+        Builder setValue(U8 value);
+        U8 getMask();
+        Builder setMask(U8 mask);
+        MatchField<U8> getMatchField();
+        boolean isMasked();
+        OFOxm<U8> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmInPhyPort.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmInPhyPort.java
new file mode 100644
index 0000000..85b2700
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmInPhyPort.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmInPhyPort extends OFObject, OFOxm<OFPort> {
+    long getTypeLen();
+    OFPort getValue();
+    MatchField<OFPort> getMatchField();
+    boolean isMasked();
+    OFOxm<OFPort> getCanonical();
+    OFPort getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<OFPort> {
+        OFOxmInPhyPort build();
+        long getTypeLen();
+        OFPort getValue();
+        Builder setValue(OFPort value);
+        MatchField<OFPort> getMatchField();
+        boolean isMasked();
+        OFOxm<OFPort> getCanonical();
+        OFPort getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmInPhyPortMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmInPhyPortMasked.java
new file mode 100644
index 0000000..ae20318
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmInPhyPortMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmInPhyPortMasked extends OFObject, OFOxm<OFPort> {
+    long getTypeLen();
+    OFPort getValue();
+    OFPort getMask();
+    MatchField<OFPort> getMatchField();
+    boolean isMasked();
+    OFOxm<OFPort> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<OFPort> {
+        OFOxmInPhyPortMasked build();
+        long getTypeLen();
+        OFPort getValue();
+        Builder setValue(OFPort value);
+        OFPort getMask();
+        Builder setMask(OFPort mask);
+        MatchField<OFPort> getMatchField();
+        boolean isMasked();
+        OFOxm<OFPort> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmInPort.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmInPort.java
new file mode 100644
index 0000000..11ac28b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmInPort.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmInPort extends OFObject, OFOxm<OFPort> {
+    long getTypeLen();
+    OFPort getValue();
+    MatchField<OFPort> getMatchField();
+    boolean isMasked();
+    OFOxm<OFPort> getCanonical();
+    OFPort getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<OFPort> {
+        OFOxmInPort build();
+        long getTypeLen();
+        OFPort getValue();
+        Builder setValue(OFPort value);
+        MatchField<OFPort> getMatchField();
+        boolean isMasked();
+        OFOxm<OFPort> getCanonical();
+        OFPort getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmInPortMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmInPortMasked.java
new file mode 100644
index 0000000..3e8970c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmInPortMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmInPortMasked extends OFObject, OFOxm<OFPort> {
+    long getTypeLen();
+    OFPort getValue();
+    OFPort getMask();
+    MatchField<OFPort> getMatchField();
+    boolean isMasked();
+    OFOxm<OFPort> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<OFPort> {
+        OFOxmInPortMasked build();
+        long getTypeLen();
+        OFPort getValue();
+        Builder setValue(OFPort value);
+        OFPort getMask();
+        Builder setMask(OFPort mask);
+        MatchField<OFPort> getMatchField();
+        boolean isMasked();
+        OFOxm<OFPort> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpDscp.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpDscp.java
new file mode 100644
index 0000000..0d829db
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpDscp.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpDscp extends OFObject, OFOxm<IpDscp> {
+    long getTypeLen();
+    IpDscp getValue();
+    MatchField<IpDscp> getMatchField();
+    boolean isMasked();
+    OFOxm<IpDscp> getCanonical();
+    IpDscp getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IpDscp> {
+        OFOxmIpDscp build();
+        long getTypeLen();
+        IpDscp getValue();
+        Builder setValue(IpDscp value);
+        MatchField<IpDscp> getMatchField();
+        boolean isMasked();
+        OFOxm<IpDscp> getCanonical();
+        IpDscp getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpDscpMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpDscpMasked.java
new file mode 100644
index 0000000..a837b72
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpDscpMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpDscpMasked extends OFObject, OFOxm<IpDscp> {
+    long getTypeLen();
+    IpDscp getValue();
+    IpDscp getMask();
+    MatchField<IpDscp> getMatchField();
+    boolean isMasked();
+    OFOxm<IpDscp> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IpDscp> {
+        OFOxmIpDscpMasked build();
+        long getTypeLen();
+        IpDscp getValue();
+        Builder setValue(IpDscp value);
+        IpDscp getMask();
+        Builder setMask(IpDscp mask);
+        MatchField<IpDscp> getMatchField();
+        boolean isMasked();
+        OFOxm<IpDscp> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpEcn.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpEcn.java
new file mode 100644
index 0000000..a70813f
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpEcn.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpEcn extends OFObject, OFOxm<IpEcn> {
+    long getTypeLen();
+    IpEcn getValue();
+    MatchField<IpEcn> getMatchField();
+    boolean isMasked();
+    OFOxm<IpEcn> getCanonical();
+    IpEcn getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IpEcn> {
+        OFOxmIpEcn build();
+        long getTypeLen();
+        IpEcn getValue();
+        Builder setValue(IpEcn value);
+        MatchField<IpEcn> getMatchField();
+        boolean isMasked();
+        OFOxm<IpEcn> getCanonical();
+        IpEcn getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpEcnMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpEcnMasked.java
new file mode 100644
index 0000000..4a3a1ff
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpEcnMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpEcnMasked extends OFObject, OFOxm<IpEcn> {
+    long getTypeLen();
+    IpEcn getValue();
+    IpEcn getMask();
+    MatchField<IpEcn> getMatchField();
+    boolean isMasked();
+    OFOxm<IpEcn> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IpEcn> {
+        OFOxmIpEcnMasked build();
+        long getTypeLen();
+        IpEcn getValue();
+        Builder setValue(IpEcn value);
+        IpEcn getMask();
+        Builder setMask(IpEcn mask);
+        MatchField<IpEcn> getMatchField();
+        boolean isMasked();
+        OFOxm<IpEcn> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpProto.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpProto.java
new file mode 100644
index 0000000..dc284d6
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpProto.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpProto extends OFObject, OFOxm<IpProtocol> {
+    long getTypeLen();
+    IpProtocol getValue();
+    MatchField<IpProtocol> getMatchField();
+    boolean isMasked();
+    OFOxm<IpProtocol> getCanonical();
+    IpProtocol getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IpProtocol> {
+        OFOxmIpProto build();
+        long getTypeLen();
+        IpProtocol getValue();
+        Builder setValue(IpProtocol value);
+        MatchField<IpProtocol> getMatchField();
+        boolean isMasked();
+        OFOxm<IpProtocol> getCanonical();
+        IpProtocol getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpProtoMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpProtoMasked.java
new file mode 100644
index 0000000..906f742
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpProtoMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpProtoMasked extends OFObject, OFOxm<IpProtocol> {
+    long getTypeLen();
+    IpProtocol getValue();
+    IpProtocol getMask();
+    MatchField<IpProtocol> getMatchField();
+    boolean isMasked();
+    OFOxm<IpProtocol> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IpProtocol> {
+        OFOxmIpProtoMasked build();
+        long getTypeLen();
+        IpProtocol getValue();
+        Builder setValue(IpProtocol value);
+        IpProtocol getMask();
+        Builder setMask(IpProtocol mask);
+        MatchField<IpProtocol> getMatchField();
+        boolean isMasked();
+        OFOxm<IpProtocol> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv4Dst.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv4Dst.java
new file mode 100644
index 0000000..6e97025
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv4Dst.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpv4Dst extends OFObject, OFOxm<IPv4Address> {
+    long getTypeLen();
+    IPv4Address getValue();
+    MatchField<IPv4Address> getMatchField();
+    boolean isMasked();
+    OFOxm<IPv4Address> getCanonical();
+    IPv4Address getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IPv4Address> {
+        OFOxmIpv4Dst build();
+        long getTypeLen();
+        IPv4Address getValue();
+        Builder setValue(IPv4Address value);
+        MatchField<IPv4Address> getMatchField();
+        boolean isMasked();
+        OFOxm<IPv4Address> getCanonical();
+        IPv4Address getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv4DstMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv4DstMasked.java
new file mode 100644
index 0000000..8a008c8
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv4DstMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpv4DstMasked extends OFObject, OFOxm<IPv4Address> {
+    long getTypeLen();
+    IPv4Address getValue();
+    IPv4Address getMask();
+    MatchField<IPv4Address> getMatchField();
+    boolean isMasked();
+    OFOxm<IPv4Address> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IPv4Address> {
+        OFOxmIpv4DstMasked build();
+        long getTypeLen();
+        IPv4Address getValue();
+        Builder setValue(IPv4Address value);
+        IPv4Address getMask();
+        Builder setMask(IPv4Address mask);
+        MatchField<IPv4Address> getMatchField();
+        boolean isMasked();
+        OFOxm<IPv4Address> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv4Src.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv4Src.java
new file mode 100644
index 0000000..1cfbc04
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv4Src.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpv4Src extends OFObject, OFOxm<IPv4Address> {
+    long getTypeLen();
+    IPv4Address getValue();
+    MatchField<IPv4Address> getMatchField();
+    boolean isMasked();
+    OFOxm<IPv4Address> getCanonical();
+    IPv4Address getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IPv4Address> {
+        OFOxmIpv4Src build();
+        long getTypeLen();
+        IPv4Address getValue();
+        Builder setValue(IPv4Address value);
+        MatchField<IPv4Address> getMatchField();
+        boolean isMasked();
+        OFOxm<IPv4Address> getCanonical();
+        IPv4Address getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv4SrcMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv4SrcMasked.java
new file mode 100644
index 0000000..9fcd714
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv4SrcMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpv4SrcMasked extends OFObject, OFOxm<IPv4Address> {
+    long getTypeLen();
+    IPv4Address getValue();
+    IPv4Address getMask();
+    MatchField<IPv4Address> getMatchField();
+    boolean isMasked();
+    OFOxm<IPv4Address> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IPv4Address> {
+        OFOxmIpv4SrcMasked build();
+        long getTypeLen();
+        IPv4Address getValue();
+        Builder setValue(IPv4Address value);
+        IPv4Address getMask();
+        Builder setMask(IPv4Address mask);
+        MatchField<IPv4Address> getMatchField();
+        boolean isMasked();
+        OFOxm<IPv4Address> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6Dst.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6Dst.java
new file mode 100644
index 0000000..bb92e3b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6Dst.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpv6Dst extends OFObject, OFOxm<IPv6Address> {
+    long getTypeLen();
+    IPv6Address getValue();
+    MatchField<IPv6Address> getMatchField();
+    boolean isMasked();
+    OFOxm<IPv6Address> getCanonical();
+    IPv6Address getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IPv6Address> {
+        OFOxmIpv6Dst build();
+        long getTypeLen();
+        IPv6Address getValue();
+        Builder setValue(IPv6Address value);
+        MatchField<IPv6Address> getMatchField();
+        boolean isMasked();
+        OFOxm<IPv6Address> getCanonical();
+        IPv6Address getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6DstMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6DstMasked.java
new file mode 100644
index 0000000..ca98060
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6DstMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpv6DstMasked extends OFObject, OFOxm<IPv6Address> {
+    long getTypeLen();
+    IPv6Address getValue();
+    IPv6Address getMask();
+    MatchField<IPv6Address> getMatchField();
+    boolean isMasked();
+    OFOxm<IPv6Address> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IPv6Address> {
+        OFOxmIpv6DstMasked build();
+        long getTypeLen();
+        IPv6Address getValue();
+        Builder setValue(IPv6Address value);
+        IPv6Address getMask();
+        Builder setMask(IPv6Address mask);
+        MatchField<IPv6Address> getMatchField();
+        boolean isMasked();
+        OFOxm<IPv6Address> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6Flabel.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6Flabel.java
new file mode 100644
index 0000000..fa28ec7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6Flabel.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpv6Flabel extends OFObject, OFOxm<IPv6FlowLabel> {
+    long getTypeLen();
+    IPv6FlowLabel getValue();
+    MatchField<IPv6FlowLabel> getMatchField();
+    boolean isMasked();
+    OFOxm<IPv6FlowLabel> getCanonical();
+    IPv6FlowLabel getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IPv6FlowLabel> {
+        OFOxmIpv6Flabel build();
+        long getTypeLen();
+        IPv6FlowLabel getValue();
+        Builder setValue(IPv6FlowLabel value);
+        MatchField<IPv6FlowLabel> getMatchField();
+        boolean isMasked();
+        OFOxm<IPv6FlowLabel> getCanonical();
+        IPv6FlowLabel getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6FlabelMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6FlabelMasked.java
new file mode 100644
index 0000000..7e19baa
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6FlabelMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpv6FlabelMasked extends OFObject, OFOxm<IPv6FlowLabel> {
+    long getTypeLen();
+    IPv6FlowLabel getValue();
+    IPv6FlowLabel getMask();
+    MatchField<IPv6FlowLabel> getMatchField();
+    boolean isMasked();
+    OFOxm<IPv6FlowLabel> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IPv6FlowLabel> {
+        OFOxmIpv6FlabelMasked build();
+        long getTypeLen();
+        IPv6FlowLabel getValue();
+        Builder setValue(IPv6FlowLabel value);
+        IPv6FlowLabel getMask();
+        Builder setMask(IPv6FlowLabel mask);
+        MatchField<IPv6FlowLabel> getMatchField();
+        boolean isMasked();
+        OFOxm<IPv6FlowLabel> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdSll.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdSll.java
new file mode 100644
index 0000000..5365c2f
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdSll.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpv6NdSll extends OFObject, OFOxm<MacAddress> {
+    long getTypeLen();
+    MacAddress getValue();
+    MatchField<MacAddress> getMatchField();
+    boolean isMasked();
+    OFOxm<MacAddress> getCanonical();
+    MacAddress getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<MacAddress> {
+        OFOxmIpv6NdSll build();
+        long getTypeLen();
+        MacAddress getValue();
+        Builder setValue(MacAddress value);
+        MatchField<MacAddress> getMatchField();
+        boolean isMasked();
+        OFOxm<MacAddress> getCanonical();
+        MacAddress getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdSllMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdSllMasked.java
new file mode 100644
index 0000000..baf32e1
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdSllMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpv6NdSllMasked extends OFObject, OFOxm<MacAddress> {
+    long getTypeLen();
+    MacAddress getValue();
+    MacAddress getMask();
+    MatchField<MacAddress> getMatchField();
+    boolean isMasked();
+    OFOxm<MacAddress> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<MacAddress> {
+        OFOxmIpv6NdSllMasked build();
+        long getTypeLen();
+        MacAddress getValue();
+        Builder setValue(MacAddress value);
+        MacAddress getMask();
+        Builder setMask(MacAddress mask);
+        MatchField<MacAddress> getMatchField();
+        boolean isMasked();
+        OFOxm<MacAddress> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdTarget.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdTarget.java
new file mode 100644
index 0000000..421f148
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdTarget.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpv6NdTarget extends OFObject, OFOxm<IPv6Address> {
+    long getTypeLen();
+    IPv6Address getValue();
+    MatchField<IPv6Address> getMatchField();
+    boolean isMasked();
+    OFOxm<IPv6Address> getCanonical();
+    IPv6Address getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IPv6Address> {
+        OFOxmIpv6NdTarget build();
+        long getTypeLen();
+        IPv6Address getValue();
+        Builder setValue(IPv6Address value);
+        MatchField<IPv6Address> getMatchField();
+        boolean isMasked();
+        OFOxm<IPv6Address> getCanonical();
+        IPv6Address getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdTargetMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdTargetMasked.java
new file mode 100644
index 0000000..807affe
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdTargetMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpv6NdTargetMasked extends OFObject, OFOxm<IPv6Address> {
+    long getTypeLen();
+    IPv6Address getValue();
+    IPv6Address getMask();
+    MatchField<IPv6Address> getMatchField();
+    boolean isMasked();
+    OFOxm<IPv6Address> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IPv6Address> {
+        OFOxmIpv6NdTargetMasked build();
+        long getTypeLen();
+        IPv6Address getValue();
+        Builder setValue(IPv6Address value);
+        IPv6Address getMask();
+        Builder setMask(IPv6Address mask);
+        MatchField<IPv6Address> getMatchField();
+        boolean isMasked();
+        OFOxm<IPv6Address> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdTll.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdTll.java
new file mode 100644
index 0000000..ca9f1ad
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdTll.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpv6NdTll extends OFObject, OFOxm<MacAddress> {
+    long getTypeLen();
+    MacAddress getValue();
+    MatchField<MacAddress> getMatchField();
+    boolean isMasked();
+    OFOxm<MacAddress> getCanonical();
+    MacAddress getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<MacAddress> {
+        OFOxmIpv6NdTll build();
+        long getTypeLen();
+        MacAddress getValue();
+        Builder setValue(MacAddress value);
+        MatchField<MacAddress> getMatchField();
+        boolean isMasked();
+        OFOxm<MacAddress> getCanonical();
+        MacAddress getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdTllMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdTllMasked.java
new file mode 100644
index 0000000..1e1a6e6
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6NdTllMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpv6NdTllMasked extends OFObject, OFOxm<MacAddress> {
+    long getTypeLen();
+    MacAddress getValue();
+    MacAddress getMask();
+    MatchField<MacAddress> getMatchField();
+    boolean isMasked();
+    OFOxm<MacAddress> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<MacAddress> {
+        OFOxmIpv6NdTllMasked build();
+        long getTypeLen();
+        MacAddress getValue();
+        Builder setValue(MacAddress value);
+        MacAddress getMask();
+        Builder setMask(MacAddress mask);
+        MatchField<MacAddress> getMatchField();
+        boolean isMasked();
+        OFOxm<MacAddress> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6Src.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6Src.java
new file mode 100644
index 0000000..528c16c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6Src.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpv6Src extends OFObject, OFOxm<IPv6Address> {
+    long getTypeLen();
+    IPv6Address getValue();
+    MatchField<IPv6Address> getMatchField();
+    boolean isMasked();
+    OFOxm<IPv6Address> getCanonical();
+    IPv6Address getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IPv6Address> {
+        OFOxmIpv6Src build();
+        long getTypeLen();
+        IPv6Address getValue();
+        Builder setValue(IPv6Address value);
+        MatchField<IPv6Address> getMatchField();
+        boolean isMasked();
+        OFOxm<IPv6Address> getCanonical();
+        IPv6Address getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6SrcMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6SrcMasked.java
new file mode 100644
index 0000000..1fc4e20
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmIpv6SrcMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmIpv6SrcMasked extends OFObject, OFOxm<IPv6Address> {
+    long getTypeLen();
+    IPv6Address getValue();
+    IPv6Address getMask();
+    MatchField<IPv6Address> getMatchField();
+    boolean isMasked();
+    OFOxm<IPv6Address> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<IPv6Address> {
+        OFOxmIpv6SrcMasked build();
+        long getTypeLen();
+        IPv6Address getValue();
+        Builder setValue(IPv6Address value);
+        IPv6Address getMask();
+        Builder setMask(IPv6Address mask);
+        MatchField<IPv6Address> getMatchField();
+        boolean isMasked();
+        OFOxm<IPv6Address> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMetadata.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMetadata.java
new file mode 100644
index 0000000..92964e6
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMetadata.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmMetadata extends OFObject, OFOxm<OFMetadata> {
+    long getTypeLen();
+    OFMetadata getValue();
+    MatchField<OFMetadata> getMatchField();
+    boolean isMasked();
+    OFOxm<OFMetadata> getCanonical();
+    OFMetadata getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<OFMetadata> {
+        OFOxmMetadata build();
+        long getTypeLen();
+        OFMetadata getValue();
+        Builder setValue(OFMetadata value);
+        MatchField<OFMetadata> getMatchField();
+        boolean isMasked();
+        OFOxm<OFMetadata> getCanonical();
+        OFMetadata getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMetadataMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMetadataMasked.java
new file mode 100644
index 0000000..58d0437
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMetadataMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmMetadataMasked extends OFObject, OFOxm<OFMetadata> {
+    long getTypeLen();
+    OFMetadata getValue();
+    OFMetadata getMask();
+    MatchField<OFMetadata> getMatchField();
+    boolean isMasked();
+    OFOxm<OFMetadata> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<OFMetadata> {
+        OFOxmMetadataMasked build();
+        long getTypeLen();
+        OFMetadata getValue();
+        Builder setValue(OFMetadata value);
+        OFMetadata getMask();
+        Builder setMask(OFMetadata mask);
+        MatchField<OFMetadata> getMatchField();
+        boolean isMasked();
+        OFOxm<OFMetadata> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMplsLabel.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMplsLabel.java
new file mode 100644
index 0000000..d64a878
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMplsLabel.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmMplsLabel extends OFObject, OFOxm<U32> {
+    long getTypeLen();
+    U32 getValue();
+    MatchField<U32> getMatchField();
+    boolean isMasked();
+    OFOxm<U32> getCanonical();
+    U32 getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<U32> {
+        OFOxmMplsLabel build();
+        long getTypeLen();
+        U32 getValue();
+        Builder setValue(U32 value);
+        MatchField<U32> getMatchField();
+        boolean isMasked();
+        OFOxm<U32> getCanonical();
+        U32 getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMplsLabelMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMplsLabelMasked.java
new file mode 100644
index 0000000..21d94f4
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMplsLabelMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmMplsLabelMasked extends OFObject, OFOxm<U32> {
+    long getTypeLen();
+    U32 getValue();
+    U32 getMask();
+    MatchField<U32> getMatchField();
+    boolean isMasked();
+    OFOxm<U32> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<U32> {
+        OFOxmMplsLabelMasked build();
+        long getTypeLen();
+        U32 getValue();
+        Builder setValue(U32 value);
+        U32 getMask();
+        Builder setMask(U32 mask);
+        MatchField<U32> getMatchField();
+        boolean isMasked();
+        OFOxm<U32> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMplsTc.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMplsTc.java
new file mode 100644
index 0000000..e7cf2e5
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMplsTc.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmMplsTc extends OFObject, OFOxm<U8> {
+    long getTypeLen();
+    U8 getValue();
+    MatchField<U8> getMatchField();
+    boolean isMasked();
+    OFOxm<U8> getCanonical();
+    U8 getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<U8> {
+        OFOxmMplsTc build();
+        long getTypeLen();
+        U8 getValue();
+        Builder setValue(U8 value);
+        MatchField<U8> getMatchField();
+        boolean isMasked();
+        OFOxm<U8> getCanonical();
+        U8 getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMplsTcMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMplsTcMasked.java
new file mode 100644
index 0000000..150ba6c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmMplsTcMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmMplsTcMasked extends OFObject, OFOxm<U8> {
+    long getTypeLen();
+    U8 getValue();
+    U8 getMask();
+    MatchField<U8> getMatchField();
+    boolean isMasked();
+    OFOxm<U8> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<U8> {
+        OFOxmMplsTcMasked build();
+        long getTypeLen();
+        U8 getValue();
+        Builder setValue(U8 value);
+        U8 getMask();
+        Builder setMask(U8 mask);
+        MatchField<U8> getMatchField();
+        boolean isMasked();
+        OFOxm<U8> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmSctpDst.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmSctpDst.java
new file mode 100644
index 0000000..16cf32d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmSctpDst.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmSctpDst extends OFObject, OFOxm<TransportPort> {
+    long getTypeLen();
+    TransportPort getValue();
+    MatchField<TransportPort> getMatchField();
+    boolean isMasked();
+    OFOxm<TransportPort> getCanonical();
+    TransportPort getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<TransportPort> {
+        OFOxmSctpDst build();
+        long getTypeLen();
+        TransportPort getValue();
+        Builder setValue(TransportPort value);
+        MatchField<TransportPort> getMatchField();
+        boolean isMasked();
+        OFOxm<TransportPort> getCanonical();
+        TransportPort getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmSctpDstMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmSctpDstMasked.java
new file mode 100644
index 0000000..15df987
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmSctpDstMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmSctpDstMasked extends OFObject, OFOxm<TransportPort> {
+    long getTypeLen();
+    TransportPort getValue();
+    TransportPort getMask();
+    MatchField<TransportPort> getMatchField();
+    boolean isMasked();
+    OFOxm<TransportPort> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<TransportPort> {
+        OFOxmSctpDstMasked build();
+        long getTypeLen();
+        TransportPort getValue();
+        Builder setValue(TransportPort value);
+        TransportPort getMask();
+        Builder setMask(TransportPort mask);
+        MatchField<TransportPort> getMatchField();
+        boolean isMasked();
+        OFOxm<TransportPort> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmSctpSrc.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmSctpSrc.java
new file mode 100644
index 0000000..1953087
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmSctpSrc.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmSctpSrc extends OFObject, OFOxm<TransportPort> {
+    long getTypeLen();
+    TransportPort getValue();
+    MatchField<TransportPort> getMatchField();
+    boolean isMasked();
+    OFOxm<TransportPort> getCanonical();
+    TransportPort getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<TransportPort> {
+        OFOxmSctpSrc build();
+        long getTypeLen();
+        TransportPort getValue();
+        Builder setValue(TransportPort value);
+        MatchField<TransportPort> getMatchField();
+        boolean isMasked();
+        OFOxm<TransportPort> getCanonical();
+        TransportPort getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmSctpSrcMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmSctpSrcMasked.java
new file mode 100644
index 0000000..4454c3c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmSctpSrcMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmSctpSrcMasked extends OFObject, OFOxm<TransportPort> {
+    long getTypeLen();
+    TransportPort getValue();
+    TransportPort getMask();
+    MatchField<TransportPort> getMatchField();
+    boolean isMasked();
+    OFOxm<TransportPort> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<TransportPort> {
+        OFOxmSctpSrcMasked build();
+        long getTypeLen();
+        TransportPort getValue();
+        Builder setValue(TransportPort value);
+        TransportPort getMask();
+        Builder setMask(TransportPort mask);
+        MatchField<TransportPort> getMatchField();
+        boolean isMasked();
+        OFOxm<TransportPort> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTcpDst.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTcpDst.java
new file mode 100644
index 0000000..9bbedc2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTcpDst.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmTcpDst extends OFObject, OFOxm<TransportPort> {
+    long getTypeLen();
+    TransportPort getValue();
+    MatchField<TransportPort> getMatchField();
+    boolean isMasked();
+    OFOxm<TransportPort> getCanonical();
+    TransportPort getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<TransportPort> {
+        OFOxmTcpDst build();
+        long getTypeLen();
+        TransportPort getValue();
+        Builder setValue(TransportPort value);
+        MatchField<TransportPort> getMatchField();
+        boolean isMasked();
+        OFOxm<TransportPort> getCanonical();
+        TransportPort getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTcpDstMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTcpDstMasked.java
new file mode 100644
index 0000000..798dab2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTcpDstMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmTcpDstMasked extends OFObject, OFOxm<TransportPort> {
+    long getTypeLen();
+    TransportPort getValue();
+    TransportPort getMask();
+    MatchField<TransportPort> getMatchField();
+    boolean isMasked();
+    OFOxm<TransportPort> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<TransportPort> {
+        OFOxmTcpDstMasked build();
+        long getTypeLen();
+        TransportPort getValue();
+        Builder setValue(TransportPort value);
+        TransportPort getMask();
+        Builder setMask(TransportPort mask);
+        MatchField<TransportPort> getMatchField();
+        boolean isMasked();
+        OFOxm<TransportPort> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTcpSrc.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTcpSrc.java
new file mode 100644
index 0000000..b4aa20e
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTcpSrc.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmTcpSrc extends OFObject, OFOxm<TransportPort> {
+    long getTypeLen();
+    TransportPort getValue();
+    MatchField<TransportPort> getMatchField();
+    boolean isMasked();
+    OFOxm<TransportPort> getCanonical();
+    TransportPort getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<TransportPort> {
+        OFOxmTcpSrc build();
+        long getTypeLen();
+        TransportPort getValue();
+        Builder setValue(TransportPort value);
+        MatchField<TransportPort> getMatchField();
+        boolean isMasked();
+        OFOxm<TransportPort> getCanonical();
+        TransportPort getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTcpSrcMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTcpSrcMasked.java
new file mode 100644
index 0000000..4a39ded
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTcpSrcMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmTcpSrcMasked extends OFObject, OFOxm<TransportPort> {
+    long getTypeLen();
+    TransportPort getValue();
+    TransportPort getMask();
+    MatchField<TransportPort> getMatchField();
+    boolean isMasked();
+    OFOxm<TransportPort> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<TransportPort> {
+        OFOxmTcpSrcMasked build();
+        long getTypeLen();
+        TransportPort getValue();
+        Builder setValue(TransportPort value);
+        TransportPort getMask();
+        Builder setMask(TransportPort mask);
+        MatchField<TransportPort> getMatchField();
+        boolean isMasked();
+        OFOxm<TransportPort> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTunnelId.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTunnelId.java
new file mode 100644
index 0000000..63a7e7a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTunnelId.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmTunnelId extends OFObject, OFOxm<U64> {
+    long getTypeLen();
+    U64 getValue();
+    MatchField<U64> getMatchField();
+    boolean isMasked();
+    OFOxm<U64> getCanonical();
+    U64 getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<U64> {
+        OFOxmTunnelId build();
+        long getTypeLen();
+        U64 getValue();
+        Builder setValue(U64 value);
+        MatchField<U64> getMatchField();
+        boolean isMasked();
+        OFOxm<U64> getCanonical();
+        U64 getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTunnelIdMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTunnelIdMasked.java
new file mode 100644
index 0000000..2f8b9b8
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmTunnelIdMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmTunnelIdMasked extends OFObject, OFOxm<U64> {
+    long getTypeLen();
+    U64 getValue();
+    U64 getMask();
+    MatchField<U64> getMatchField();
+    boolean isMasked();
+    OFOxm<U64> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<U64> {
+        OFOxmTunnelIdMasked build();
+        long getTypeLen();
+        U64 getValue();
+        Builder setValue(U64 value);
+        U64 getMask();
+        Builder setMask(U64 mask);
+        MatchField<U64> getMatchField();
+        boolean isMasked();
+        OFOxm<U64> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmUdpDst.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmUdpDst.java
new file mode 100644
index 0000000..097db29
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmUdpDst.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmUdpDst extends OFObject, OFOxm<TransportPort> {
+    long getTypeLen();
+    TransportPort getValue();
+    MatchField<TransportPort> getMatchField();
+    boolean isMasked();
+    OFOxm<TransportPort> getCanonical();
+    TransportPort getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<TransportPort> {
+        OFOxmUdpDst build();
+        long getTypeLen();
+        TransportPort getValue();
+        Builder setValue(TransportPort value);
+        MatchField<TransportPort> getMatchField();
+        boolean isMasked();
+        OFOxm<TransportPort> getCanonical();
+        TransportPort getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmUdpDstMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmUdpDstMasked.java
new file mode 100644
index 0000000..37fea56
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmUdpDstMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmUdpDstMasked extends OFObject, OFOxm<TransportPort> {
+    long getTypeLen();
+    TransportPort getValue();
+    TransportPort getMask();
+    MatchField<TransportPort> getMatchField();
+    boolean isMasked();
+    OFOxm<TransportPort> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<TransportPort> {
+        OFOxmUdpDstMasked build();
+        long getTypeLen();
+        TransportPort getValue();
+        Builder setValue(TransportPort value);
+        TransportPort getMask();
+        Builder setMask(TransportPort mask);
+        MatchField<TransportPort> getMatchField();
+        boolean isMasked();
+        OFOxm<TransportPort> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmUdpSrc.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmUdpSrc.java
new file mode 100644
index 0000000..9f16f2d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmUdpSrc.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmUdpSrc extends OFObject, OFOxm<TransportPort> {
+    long getTypeLen();
+    TransportPort getValue();
+    MatchField<TransportPort> getMatchField();
+    boolean isMasked();
+    OFOxm<TransportPort> getCanonical();
+    TransportPort getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<TransportPort> {
+        OFOxmUdpSrc build();
+        long getTypeLen();
+        TransportPort getValue();
+        Builder setValue(TransportPort value);
+        MatchField<TransportPort> getMatchField();
+        boolean isMasked();
+        OFOxm<TransportPort> getCanonical();
+        TransportPort getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmUdpSrcMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmUdpSrcMasked.java
new file mode 100644
index 0000000..623b6b7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmUdpSrcMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmUdpSrcMasked extends OFObject, OFOxm<TransportPort> {
+    long getTypeLen();
+    TransportPort getValue();
+    TransportPort getMask();
+    MatchField<TransportPort> getMatchField();
+    boolean isMasked();
+    OFOxm<TransportPort> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<TransportPort> {
+        OFOxmUdpSrcMasked build();
+        long getTypeLen();
+        TransportPort getValue();
+        Builder setValue(TransportPort value);
+        TransportPort getMask();
+        Builder setMask(TransportPort mask);
+        MatchField<TransportPort> getMatchField();
+        boolean isMasked();
+        OFOxm<TransportPort> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmVlanPcp.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmVlanPcp.java
new file mode 100644
index 0000000..858e6a0
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmVlanPcp.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmVlanPcp extends OFObject, OFOxm<VlanPcp> {
+    long getTypeLen();
+    VlanPcp getValue();
+    MatchField<VlanPcp> getMatchField();
+    boolean isMasked();
+    OFOxm<VlanPcp> getCanonical();
+    VlanPcp getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<VlanPcp> {
+        OFOxmVlanPcp build();
+        long getTypeLen();
+        VlanPcp getValue();
+        Builder setValue(VlanPcp value);
+        MatchField<VlanPcp> getMatchField();
+        boolean isMasked();
+        OFOxm<VlanPcp> getCanonical();
+        VlanPcp getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmVlanPcpMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmVlanPcpMasked.java
new file mode 100644
index 0000000..62a34b2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmVlanPcpMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmVlanPcpMasked extends OFObject, OFOxm<VlanPcp> {
+    long getTypeLen();
+    VlanPcp getValue();
+    VlanPcp getMask();
+    MatchField<VlanPcp> getMatchField();
+    boolean isMasked();
+    OFOxm<VlanPcp> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<VlanPcp> {
+        OFOxmVlanPcpMasked build();
+        long getTypeLen();
+        VlanPcp getValue();
+        Builder setValue(VlanPcp value);
+        VlanPcp getMask();
+        Builder setMask(VlanPcp mask);
+        MatchField<VlanPcp> getMatchField();
+        boolean isMasked();
+        OFOxm<VlanPcp> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmVlanVid.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmVlanVid.java
new file mode 100644
index 0000000..4b34b05
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmVlanVid.java
@@ -0,0 +1,51 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmVlanVid extends OFObject, OFOxm<OFVlanVidMatch> {
+    long getTypeLen();
+    OFVlanVidMatch getValue();
+    MatchField<OFVlanVidMatch> getMatchField();
+    boolean isMasked();
+    OFOxm<OFVlanVidMatch> getCanonical();
+    OFVlanVidMatch getMask();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<OFVlanVidMatch> {
+        OFOxmVlanVid build();
+        long getTypeLen();
+        OFVlanVidMatch getValue();
+        Builder setValue(OFVlanVidMatch value);
+        MatchField<OFVlanVidMatch> getMatchField();
+        boolean isMasked();
+        OFOxm<OFVlanVidMatch> getCanonical();
+        OFVlanVidMatch getMask();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmVlanVidMasked.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmVlanVidMasked.java
new file mode 100644
index 0000000..36110a7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxmVlanVidMasked.java
@@ -0,0 +1,52 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFOxmVlanVidMasked extends OFObject, OFOxm<OFVlanVidMatch> {
+    long getTypeLen();
+    OFVlanVidMatch getValue();
+    OFVlanVidMatch getMask();
+    MatchField<OFVlanVidMatch> getMatchField();
+    boolean isMasked();
+    OFOxm<OFVlanVidMatch> getCanonical();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFOxm.Builder<OFVlanVidMatch> {
+        OFOxmVlanVidMasked build();
+        long getTypeLen();
+        OFVlanVidMatch getValue();
+        Builder setValue(OFVlanVidMatch value);
+        OFVlanVidMatch getMask();
+        Builder setMask(OFVlanVidMatch mask);
+        MatchField<OFVlanVidMatch> getMatchField();
+        boolean isMasked();
+        OFOxm<OFVlanVidMatch> getCanonical();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxms.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxms.java
new file mode 100644
index 0000000..9cc2bba
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/oxm/OFOxms.java
@@ -0,0 +1,257 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_factory_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.oxm;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public interface OFOxms {
+    // Subfactories
+
+    OFOxmArpOp.Builder buildArpOp() throws UnsupportedOperationException;
+    OFOxmArpOp arpOp(ArpOpcode value);
+    OFOxmArpOpMasked.Builder buildArpOpMasked() throws UnsupportedOperationException;
+    OFOxmArpOpMasked arpOpMasked(ArpOpcode value, ArpOpcode mask);
+    OFOxmArpSha.Builder buildArpSha() throws UnsupportedOperationException;
+    OFOxmArpSha arpSha(MacAddress value);
+    OFOxmArpShaMasked.Builder buildArpShaMasked() throws UnsupportedOperationException;
+    OFOxmArpShaMasked arpShaMasked(MacAddress value, MacAddress mask);
+    OFOxmArpSpa.Builder buildArpSpa() throws UnsupportedOperationException;
+    OFOxmArpSpa arpSpa(IPv4Address value);
+    OFOxmArpSpaMasked.Builder buildArpSpaMasked() throws UnsupportedOperationException;
+    OFOxmArpSpaMasked arpSpaMasked(IPv4Address value, IPv4Address mask);
+    OFOxmArpTha.Builder buildArpTha() throws UnsupportedOperationException;
+    OFOxmArpTha arpTha(MacAddress value);
+    OFOxmArpThaMasked.Builder buildArpThaMasked() throws UnsupportedOperationException;
+    OFOxmArpThaMasked arpThaMasked(MacAddress value, MacAddress mask);
+    OFOxmArpTpa.Builder buildArpTpa() throws UnsupportedOperationException;
+    OFOxmArpTpa arpTpa(IPv4Address value);
+    OFOxmArpTpaMasked.Builder buildArpTpaMasked() throws UnsupportedOperationException;
+    OFOxmArpTpaMasked arpTpaMasked(IPv4Address value, IPv4Address mask);
+    OFOxmBsnEgrPortGroupId.Builder buildBsnEgrPortGroupId() throws UnsupportedOperationException;
+    OFOxmBsnEgrPortGroupId bsnEgrPortGroupId(ClassId value);
+    OFOxmBsnEgrPortGroupIdMasked.Builder buildBsnEgrPortGroupIdMasked() throws UnsupportedOperationException;
+    OFOxmBsnEgrPortGroupIdMasked bsnEgrPortGroupIdMasked(ClassId value, ClassId mask);
+    OFOxmBsnGlobalVrfAllowed.Builder buildBsnGlobalVrfAllowed() throws UnsupportedOperationException;
+    OFOxmBsnGlobalVrfAllowed bsnGlobalVrfAllowed(OFBooleanValue value);
+    OFOxmBsnGlobalVrfAllowedMasked.Builder buildBsnGlobalVrfAllowedMasked() throws UnsupportedOperationException;
+    OFOxmBsnGlobalVrfAllowedMasked bsnGlobalVrfAllowedMasked(OFBooleanValue value, OFBooleanValue mask);
+    OFOxmBsnInPorts128.Builder buildBsnInPorts128() throws UnsupportedOperationException;
+    OFOxmBsnInPorts128 bsnInPorts128(OFBitMask128 value);
+    OFOxmBsnInPorts128Masked.Builder buildBsnInPorts128Masked() throws UnsupportedOperationException;
+    OFOxmBsnInPorts128Masked bsnInPorts128Masked(OFBitMask128 value, OFBitMask128 mask);
+    OFOxmBsnL3DstClassId.Builder buildBsnL3DstClassId() throws UnsupportedOperationException;
+    OFOxmBsnL3DstClassId bsnL3DstClassId(ClassId value);
+    OFOxmBsnL3DstClassIdMasked.Builder buildBsnL3DstClassIdMasked() throws UnsupportedOperationException;
+    OFOxmBsnL3DstClassIdMasked bsnL3DstClassIdMasked(ClassId value, ClassId mask);
+    OFOxmBsnL3InterfaceClassId.Builder buildBsnL3InterfaceClassId() throws UnsupportedOperationException;
+    OFOxmBsnL3InterfaceClassId bsnL3InterfaceClassId(ClassId value);
+    OFOxmBsnL3InterfaceClassIdMasked.Builder buildBsnL3InterfaceClassIdMasked() throws UnsupportedOperationException;
+    OFOxmBsnL3InterfaceClassIdMasked bsnL3InterfaceClassIdMasked(ClassId value, ClassId mask);
+    OFOxmBsnL3SrcClassId.Builder buildBsnL3SrcClassId() throws UnsupportedOperationException;
+    OFOxmBsnL3SrcClassId bsnL3SrcClassId(ClassId value);
+    OFOxmBsnL3SrcClassIdMasked.Builder buildBsnL3SrcClassIdMasked() throws UnsupportedOperationException;
+    OFOxmBsnL3SrcClassIdMasked bsnL3SrcClassIdMasked(ClassId value, ClassId mask);
+    OFOxmBsnLagId.Builder buildBsnLagId() throws UnsupportedOperationException;
+    OFOxmBsnLagId bsnLagId(LagId value);
+    OFOxmBsnLagIdMasked.Builder buildBsnLagIdMasked() throws UnsupportedOperationException;
+    OFOxmBsnLagIdMasked bsnLagIdMasked(LagId value, LagId mask);
+    OFOxmBsnTcpFlags.Builder buildBsnTcpFlags() throws UnsupportedOperationException;
+    OFOxmBsnTcpFlags bsnTcpFlags(U16 value);
+    OFOxmBsnTcpFlagsMasked.Builder buildBsnTcpFlagsMasked() throws UnsupportedOperationException;
+    OFOxmBsnTcpFlagsMasked bsnTcpFlagsMasked(U16 value, U16 mask);
+    OFOxmBsnUdf0.Builder buildBsnUdf0() throws UnsupportedOperationException;
+    OFOxmBsnUdf0 bsnUdf0(UDF value);
+    OFOxmBsnUdf0Masked.Builder buildBsnUdf0Masked() throws UnsupportedOperationException;
+    OFOxmBsnUdf0Masked bsnUdf0Masked(UDF value, UDF mask);
+    OFOxmBsnUdf1.Builder buildBsnUdf1() throws UnsupportedOperationException;
+    OFOxmBsnUdf1 bsnUdf1(UDF value);
+    OFOxmBsnUdf1Masked.Builder buildBsnUdf1Masked() throws UnsupportedOperationException;
+    OFOxmBsnUdf1Masked bsnUdf1Masked(UDF value, UDF mask);
+    OFOxmBsnUdf2.Builder buildBsnUdf2() throws UnsupportedOperationException;
+    OFOxmBsnUdf2 bsnUdf2(UDF value);
+    OFOxmBsnUdf2Masked.Builder buildBsnUdf2Masked() throws UnsupportedOperationException;
+    OFOxmBsnUdf2Masked bsnUdf2Masked(UDF value, UDF mask);
+    OFOxmBsnUdf3.Builder buildBsnUdf3() throws UnsupportedOperationException;
+    OFOxmBsnUdf3 bsnUdf3(UDF value);
+    OFOxmBsnUdf3Masked.Builder buildBsnUdf3Masked() throws UnsupportedOperationException;
+    OFOxmBsnUdf3Masked bsnUdf3Masked(UDF value, UDF mask);
+    OFOxmBsnUdf4.Builder buildBsnUdf4() throws UnsupportedOperationException;
+    OFOxmBsnUdf4 bsnUdf4(UDF value);
+    OFOxmBsnUdf4Masked.Builder buildBsnUdf4Masked() throws UnsupportedOperationException;
+    OFOxmBsnUdf4Masked bsnUdf4Masked(UDF value, UDF mask);
+    OFOxmBsnUdf5.Builder buildBsnUdf5() throws UnsupportedOperationException;
+    OFOxmBsnUdf5 bsnUdf5(UDF value);
+    OFOxmBsnUdf5Masked.Builder buildBsnUdf5Masked() throws UnsupportedOperationException;
+    OFOxmBsnUdf5Masked bsnUdf5Masked(UDF value, UDF mask);
+    OFOxmBsnUdf6.Builder buildBsnUdf6() throws UnsupportedOperationException;
+    OFOxmBsnUdf6 bsnUdf6(UDF value);
+    OFOxmBsnUdf6Masked.Builder buildBsnUdf6Masked() throws UnsupportedOperationException;
+    OFOxmBsnUdf6Masked bsnUdf6Masked(UDF value, UDF mask);
+    OFOxmBsnUdf7.Builder buildBsnUdf7() throws UnsupportedOperationException;
+    OFOxmBsnUdf7 bsnUdf7(UDF value);
+    OFOxmBsnUdf7Masked.Builder buildBsnUdf7Masked() throws UnsupportedOperationException;
+    OFOxmBsnUdf7Masked bsnUdf7Masked(UDF value, UDF mask);
+    OFOxmBsnVlanXlatePortGroupId.Builder buildBsnVlanXlatePortGroupId() throws UnsupportedOperationException;
+    OFOxmBsnVlanXlatePortGroupId bsnVlanXlatePortGroupId(ClassId value);
+    OFOxmBsnVlanXlatePortGroupIdMasked.Builder buildBsnVlanXlatePortGroupIdMasked() throws UnsupportedOperationException;
+    OFOxmBsnVlanXlatePortGroupIdMasked bsnVlanXlatePortGroupIdMasked(ClassId value, ClassId mask);
+    OFOxmBsnVrf.Builder buildBsnVrf() throws UnsupportedOperationException;
+    OFOxmBsnVrf bsnVrf(VRF value);
+    OFOxmBsnVrfMasked.Builder buildBsnVrfMasked() throws UnsupportedOperationException;
+    OFOxmBsnVrfMasked bsnVrfMasked(VRF value, VRF mask);
+    OFOxmEthDst.Builder buildEthDst() throws UnsupportedOperationException;
+    OFOxmEthDst ethDst(MacAddress value);
+    OFOxmEthDstMasked.Builder buildEthDstMasked() throws UnsupportedOperationException;
+    OFOxmEthDstMasked ethDstMasked(MacAddress value, MacAddress mask);
+    OFOxmEthSrc.Builder buildEthSrc() throws UnsupportedOperationException;
+    OFOxmEthSrc ethSrc(MacAddress value);
+    OFOxmEthSrcMasked.Builder buildEthSrcMasked() throws UnsupportedOperationException;
+    OFOxmEthSrcMasked ethSrcMasked(MacAddress value, MacAddress mask);
+    OFOxmEthType.Builder buildEthType() throws UnsupportedOperationException;
+    OFOxmEthType ethType(EthType value);
+    OFOxmEthTypeMasked.Builder buildEthTypeMasked() throws UnsupportedOperationException;
+    OFOxmEthTypeMasked ethTypeMasked(EthType value, EthType mask);
+    OFOxmIcmpv4Code.Builder buildIcmpv4Code() throws UnsupportedOperationException;
+    OFOxmIcmpv4Code icmpv4Code(ICMPv4Code value);
+    OFOxmIcmpv4CodeMasked.Builder buildIcmpv4CodeMasked() throws UnsupportedOperationException;
+    OFOxmIcmpv4CodeMasked icmpv4CodeMasked(ICMPv4Code value, ICMPv4Code mask);
+    OFOxmIcmpv4Type.Builder buildIcmpv4Type() throws UnsupportedOperationException;
+    OFOxmIcmpv4Type icmpv4Type(ICMPv4Type value);
+    OFOxmIcmpv4TypeMasked.Builder buildIcmpv4TypeMasked() throws UnsupportedOperationException;
+    OFOxmIcmpv4TypeMasked icmpv4TypeMasked(ICMPv4Type value, ICMPv4Type mask);
+    OFOxmIcmpv6Code.Builder buildIcmpv6Code() throws UnsupportedOperationException;
+    OFOxmIcmpv6Code icmpv6Code(U8 value);
+    OFOxmIcmpv6CodeMasked.Builder buildIcmpv6CodeMasked() throws UnsupportedOperationException;
+    OFOxmIcmpv6CodeMasked icmpv6CodeMasked(U8 value, U8 mask);
+    OFOxmIcmpv6Type.Builder buildIcmpv6Type() throws UnsupportedOperationException;
+    OFOxmIcmpv6Type icmpv6Type(U8 value);
+    OFOxmIcmpv6TypeMasked.Builder buildIcmpv6TypeMasked() throws UnsupportedOperationException;
+    OFOxmIcmpv6TypeMasked icmpv6TypeMasked(U8 value, U8 mask);
+    OFOxmInPhyPort.Builder buildInPhyPort() throws UnsupportedOperationException;
+    OFOxmInPhyPort inPhyPort(OFPort value);
+    OFOxmInPhyPortMasked.Builder buildInPhyPortMasked() throws UnsupportedOperationException;
+    OFOxmInPhyPortMasked inPhyPortMasked(OFPort value, OFPort mask);
+    OFOxmInPort.Builder buildInPort() throws UnsupportedOperationException;
+    OFOxmInPort inPort(OFPort value);
+    OFOxmInPortMasked.Builder buildInPortMasked() throws UnsupportedOperationException;
+    OFOxmInPortMasked inPortMasked(OFPort value, OFPort mask);
+    OFOxmIpDscp.Builder buildIpDscp() throws UnsupportedOperationException;
+    OFOxmIpDscp ipDscp(IpDscp value);
+    OFOxmIpDscpMasked.Builder buildIpDscpMasked() throws UnsupportedOperationException;
+    OFOxmIpDscpMasked ipDscpMasked(IpDscp value, IpDscp mask);
+    OFOxmIpEcn.Builder buildIpEcn() throws UnsupportedOperationException;
+    OFOxmIpEcn ipEcn(IpEcn value);
+    OFOxmIpEcnMasked.Builder buildIpEcnMasked() throws UnsupportedOperationException;
+    OFOxmIpEcnMasked ipEcnMasked(IpEcn value, IpEcn mask);
+    OFOxmIpProto.Builder buildIpProto() throws UnsupportedOperationException;
+    OFOxmIpProto ipProto(IpProtocol value);
+    OFOxmIpProtoMasked.Builder buildIpProtoMasked() throws UnsupportedOperationException;
+    OFOxmIpProtoMasked ipProtoMasked(IpProtocol value, IpProtocol mask);
+    OFOxmIpv4Dst.Builder buildIpv4Dst() throws UnsupportedOperationException;
+    OFOxmIpv4Dst ipv4Dst(IPv4Address value);
+    OFOxmIpv4DstMasked.Builder buildIpv4DstMasked() throws UnsupportedOperationException;
+    OFOxmIpv4DstMasked ipv4DstMasked(IPv4Address value, IPv4Address mask);
+    OFOxmIpv4Src.Builder buildIpv4Src() throws UnsupportedOperationException;
+    OFOxmIpv4Src ipv4Src(IPv4Address value);
+    OFOxmIpv4SrcMasked.Builder buildIpv4SrcMasked() throws UnsupportedOperationException;
+    OFOxmIpv4SrcMasked ipv4SrcMasked(IPv4Address value, IPv4Address mask);
+    OFOxmIpv6Dst.Builder buildIpv6Dst() throws UnsupportedOperationException;
+    OFOxmIpv6Dst ipv6Dst(IPv6Address value);
+    OFOxmIpv6DstMasked.Builder buildIpv6DstMasked() throws UnsupportedOperationException;
+    OFOxmIpv6DstMasked ipv6DstMasked(IPv6Address value, IPv6Address mask);
+    OFOxmIpv6Flabel.Builder buildIpv6Flabel() throws UnsupportedOperationException;
+    OFOxmIpv6Flabel ipv6Flabel(IPv6FlowLabel value);
+    OFOxmIpv6FlabelMasked.Builder buildIpv6FlabelMasked() throws UnsupportedOperationException;
+    OFOxmIpv6FlabelMasked ipv6FlabelMasked(IPv6FlowLabel value, IPv6FlowLabel mask);
+    OFOxmIpv6NdSll.Builder buildIpv6NdSll() throws UnsupportedOperationException;
+    OFOxmIpv6NdSll ipv6NdSll(MacAddress value);
+    OFOxmIpv6NdSllMasked.Builder buildIpv6NdSllMasked() throws UnsupportedOperationException;
+    OFOxmIpv6NdSllMasked ipv6NdSllMasked(MacAddress value, MacAddress mask);
+    OFOxmIpv6NdTarget.Builder buildIpv6NdTarget() throws UnsupportedOperationException;
+    OFOxmIpv6NdTarget ipv6NdTarget(IPv6Address value);
+    OFOxmIpv6NdTargetMasked.Builder buildIpv6NdTargetMasked() throws UnsupportedOperationException;
+    OFOxmIpv6NdTargetMasked ipv6NdTargetMasked(IPv6Address value, IPv6Address mask);
+    OFOxmIpv6NdTll.Builder buildIpv6NdTll() throws UnsupportedOperationException;
+    OFOxmIpv6NdTll ipv6NdTll(MacAddress value);
+    OFOxmIpv6NdTllMasked.Builder buildIpv6NdTllMasked() throws UnsupportedOperationException;
+    OFOxmIpv6NdTllMasked ipv6NdTllMasked(MacAddress value, MacAddress mask);
+    OFOxmIpv6Src.Builder buildIpv6Src() throws UnsupportedOperationException;
+    OFOxmIpv6Src ipv6Src(IPv6Address value);
+    OFOxmIpv6SrcMasked.Builder buildIpv6SrcMasked() throws UnsupportedOperationException;
+    OFOxmIpv6SrcMasked ipv6SrcMasked(IPv6Address value, IPv6Address mask);
+    OFOxmMetadata.Builder buildMetadata() throws UnsupportedOperationException;
+    OFOxmMetadata metadata(OFMetadata value);
+    OFOxmMetadataMasked.Builder buildMetadataMasked() throws UnsupportedOperationException;
+    OFOxmMetadataMasked metadataMasked(OFMetadata value, OFMetadata mask);
+    OFOxmMplsLabel.Builder buildMplsLabel() throws UnsupportedOperationException;
+    OFOxmMplsLabel mplsLabel(U32 value);
+    OFOxmMplsLabelMasked.Builder buildMplsLabelMasked() throws UnsupportedOperationException;
+    OFOxmMplsLabelMasked mplsLabelMasked(U32 value, U32 mask);
+    OFOxmMplsTc.Builder buildMplsTc() throws UnsupportedOperationException;
+    OFOxmMplsTc mplsTc(U8 value);
+    OFOxmMplsTcMasked.Builder buildMplsTcMasked() throws UnsupportedOperationException;
+    OFOxmMplsTcMasked mplsTcMasked(U8 value, U8 mask);
+    OFOxmSctpDst.Builder buildSctpDst() throws UnsupportedOperationException;
+    OFOxmSctpDst sctpDst(TransportPort value);
+    OFOxmSctpDstMasked.Builder buildSctpDstMasked() throws UnsupportedOperationException;
+    OFOxmSctpDstMasked sctpDstMasked(TransportPort value, TransportPort mask);
+    OFOxmSctpSrc.Builder buildSctpSrc() throws UnsupportedOperationException;
+    OFOxmSctpSrc sctpSrc(TransportPort value);
+    OFOxmSctpSrcMasked.Builder buildSctpSrcMasked() throws UnsupportedOperationException;
+    OFOxmSctpSrcMasked sctpSrcMasked(TransportPort value, TransportPort mask);
+    OFOxmTcpDst.Builder buildTcpDst() throws UnsupportedOperationException;
+    OFOxmTcpDst tcpDst(TransportPort value);
+    OFOxmTcpDstMasked.Builder buildTcpDstMasked() throws UnsupportedOperationException;
+    OFOxmTcpDstMasked tcpDstMasked(TransportPort value, TransportPort mask);
+    OFOxmTcpSrc.Builder buildTcpSrc() throws UnsupportedOperationException;
+    OFOxmTcpSrc tcpSrc(TransportPort value);
+    OFOxmTcpSrcMasked.Builder buildTcpSrcMasked() throws UnsupportedOperationException;
+    OFOxmTcpSrcMasked tcpSrcMasked(TransportPort value, TransportPort mask);
+    OFOxmUdpDst.Builder buildUdpDst() throws UnsupportedOperationException;
+    OFOxmUdpDst udpDst(TransportPort value);
+    OFOxmUdpDstMasked.Builder buildUdpDstMasked() throws UnsupportedOperationException;
+    OFOxmUdpDstMasked udpDstMasked(TransportPort value, TransportPort mask);
+    OFOxmUdpSrc.Builder buildUdpSrc() throws UnsupportedOperationException;
+    OFOxmUdpSrc udpSrc(TransportPort value);
+    OFOxmUdpSrcMasked.Builder buildUdpSrcMasked() throws UnsupportedOperationException;
+    OFOxmUdpSrcMasked udpSrcMasked(TransportPort value, TransportPort mask);
+    OFOxmVlanPcp.Builder buildVlanPcp() throws UnsupportedOperationException;
+    OFOxmVlanPcp vlanPcp(VlanPcp value);
+    OFOxmVlanPcpMasked.Builder buildVlanPcpMasked() throws UnsupportedOperationException;
+    OFOxmVlanPcpMasked vlanPcpMasked(VlanPcp value, VlanPcp mask);
+    OFOxmVlanVid.Builder buildVlanVid() throws UnsupportedOperationException;
+    OFOxmVlanVid vlanVid(OFVlanVidMatch value);
+    OFOxmVlanVidMasked.Builder buildVlanVidMasked() throws UnsupportedOperationException;
+    OFOxmVlanVidMasked vlanVidMasked(OFVlanVidMatch value, OFVlanVidMatch mask);
+    OFOxmTunnelId.Builder buildTunnelId() throws UnsupportedOperationException;
+    OFOxmTunnelId tunnelId(U64 value);
+    OFOxmTunnelIdMasked.Builder buildTunnelIdMasked() throws UnsupportedOperationException;
+    OFOxmTunnelIdMasked tunnelIdMasked(U64 value, U64 mask);
+
+    OFMessageReader<OFOxm<?>> getReader();
+    OFVersion getVersion();
+
+    public <F extends OFValueType<F>> OFOxm<F> fromValue(F value, MatchField<F> field);
+    public <F extends OFValueType<F>> OFOxm<F> fromValueAndMask(F value, F mask, MatchField<F> field);
+    public <F extends OFValueType<F>> OFOxm<F> fromMasked(Masked<F> masked, MatchField<F> field);
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/queueprop/OFQueueProp.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/queueprop/OFQueueProp.java
new file mode 100644
index 0000000..d82da0a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/queueprop/OFQueueProp.java
@@ -0,0 +1,40 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.queueprop;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFQueueProp extends OFObject {
+    int getType();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder  {
+        OFQueueProp build();
+        int getType();
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/queueprop/OFQueuePropExperimenter.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/queueprop/OFQueuePropExperimenter.java
new file mode 100644
index 0000000..50ed036
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/queueprop/OFQueuePropExperimenter.java
@@ -0,0 +1,45 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.queueprop;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFQueuePropExperimenter extends OFObject, OFQueueProp {
+    int getType();
+    long getExperimenter();
+    byte[] getData();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFQueueProp.Builder {
+        OFQueuePropExperimenter build();
+        int getType();
+        long getExperimenter();
+        byte[] getData();
+        Builder setData(byte[] data);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/queueprop/OFQueuePropMaxRate.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/queueprop/OFQueuePropMaxRate.java
new file mode 100644
index 0000000..44f3c24
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/queueprop/OFQueuePropMaxRate.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.queueprop;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFQueuePropMaxRate extends OFObject, OFQueueProp {
+    int getType();
+    int getRate();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFQueueProp.Builder {
+        OFQueuePropMaxRate build();
+        int getType();
+        int getRate();
+        Builder setRate(int rate);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/queueprop/OFQueuePropMinRate.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/queueprop/OFQueuePropMinRate.java
new file mode 100644
index 0000000..e6941f7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/queueprop/OFQueuePropMinRate.java
@@ -0,0 +1,43 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.queueprop;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+public interface OFQueuePropMinRate extends OFObject, OFQueueProp {
+    int getType();
+    int getRate();
+    OFVersion getVersion();
+
+    void writeTo(ChannelBuffer channelBuffer);
+
+    Builder createBuilder();
+    public interface Builder extends OFQueueProp.Builder {
+        OFQueuePropMinRate build();
+        int getType();
+        int getRate();
+        Builder setRate(int rate);
+        OFVersion getVersion();
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/queueprop/OFQueueProps.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/queueprop/OFQueueProps.java
new file mode 100644
index 0000000..ba85e85
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/queueprop/OFQueueProps.java
@@ -0,0 +1,37 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_factory_interface.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.queueprop;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+public interface OFQueueProps {
+    // Subfactories
+
+    OFQueuePropMinRate.Builder buildMinRate();
+    OFQueuePropMinRate minRate(int rate);
+    OFQueuePropMaxRate.Builder buildMaxRate() throws UnsupportedOperationException;
+    OFQueuePropMaxRate maxRate(int rate);
+
+    OFMessageReader<OFQueueProp> getReader();
+    OFVersion getVersion();
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionBsnChecksumVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionBsnChecksumVer10.java
new file mode 100644
index 0000000..3d3649b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionBsnChecksumVer10.java
@@ -0,0 +1,313 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFActionBsnChecksumVer10 implements OFActionBsnChecksum {
+    private static final Logger logger = LoggerFactory.getLogger(OFActionBsnChecksumVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 28;
+
+        private final static U128 DEFAULT_CHECKSUM = U128.ZERO;
+
+    // OF message fields
+    private final U128 checksum;
+//
+    // Immutable default instance
+    final static OFActionBsnChecksumVer10 DEFAULT = new OFActionBsnChecksumVer10(
+        DEFAULT_CHECKSUM
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFActionBsnChecksumVer10(U128 checksum) {
+        this.checksum = checksum;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFActionType getType() {
+        return OFActionType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x4L;
+    }
+
+    @Override
+    public U128 getChecksum() {
+        return checksum;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    public OFActionBsnChecksum.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFActionBsnChecksum.Builder {
+        final OFActionBsnChecksumVer10 parentMessage;
+
+        // OF message fields
+        private boolean checksumSet;
+        private U128 checksum;
+
+        BuilderWithParent(OFActionBsnChecksumVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x4L;
+    }
+
+    @Override
+    public U128 getChecksum() {
+        return checksum;
+    }
+
+    @Override
+    public OFActionBsnChecksum.Builder setChecksum(U128 checksum) {
+        this.checksum = checksum;
+        this.checksumSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+        @Override
+        public OFActionBsnChecksum build() {
+                U128 checksum = this.checksumSet ? this.checksum : parentMessage.checksum;
+                if(checksum == null)
+                    throw new NullPointerException("Property checksum must not be null");
+
+                //
+                return new OFActionBsnChecksumVer10(
+                    checksum
+                );
+        }
+
+    }
+
+    static class Builder implements OFActionBsnChecksum.Builder {
+        // OF message fields
+        private boolean checksumSet;
+        private U128 checksum;
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x4L;
+    }
+
+    @Override
+    public U128 getChecksum() {
+        return checksum;
+    }
+
+    @Override
+    public OFActionBsnChecksum.Builder setChecksum(U128 checksum) {
+        this.checksum = checksum;
+        this.checksumSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+//
+        @Override
+        public OFActionBsnChecksum build() {
+            U128 checksum = this.checksumSet ? this.checksum : DEFAULT_CHECKSUM;
+            if(checksum == null)
+                throw new NullPointerException("Property checksum must not be null");
+
+
+            return new OFActionBsnChecksumVer10(
+                    checksum
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFActionBsnChecksum> {
+        @Override
+        public OFActionBsnChecksum readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 65535
+            short type = bb.readShort();
+            if(type != (short) 0xffff)
+                throw new OFParseError("Wrong type: Expected=OFActionType.EXPERIMENTER(65535), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 28)
+                throw new OFParseError("Wrong length: Expected=28(28), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x4L
+            int subtype = bb.readInt();
+            if(subtype != 0x4)
+                throw new OFParseError("Wrong subtype: Expected=0x4L(0x4L), got="+subtype);
+            U128 checksum = U128.read16Bytes(bb);
+
+            OFActionBsnChecksumVer10 actionBsnChecksumVer10 = new OFActionBsnChecksumVer10(
+                    checksum
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", actionBsnChecksumVer10);
+            return actionBsnChecksumVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFActionBsnChecksumVer10Funnel FUNNEL = new OFActionBsnChecksumVer10Funnel();
+    static class OFActionBsnChecksumVer10Funnel implements Funnel<OFActionBsnChecksumVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFActionBsnChecksumVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 65535
+            sink.putShort((short) 0xffff);
+            // fixed value property length = 28
+            sink.putShort((short) 0x1c);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x4L
+            sink.putInt(0x4);
+            message.checksum.putTo(sink);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFActionBsnChecksumVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFActionBsnChecksumVer10 message) {
+            // fixed value property type = 65535
+            bb.writeShort((short) 0xffff);
+            // fixed value property length = 28
+            bb.writeShort((short) 0x1c);
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x4L
+            bb.writeInt(0x4);
+            message.checksum.write16Bytes(bb);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFActionBsnChecksumVer10(");
+        b.append("checksum=").append(checksum);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFActionBsnChecksumVer10 other = (OFActionBsnChecksumVer10) obj;
+
+        if (checksum == null) {
+            if (other.checksum != null)
+                return false;
+        } else if (!checksum.equals(other.checksum))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime * result + ((checksum == null) ? 0 : checksum.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionBsnMirrorVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionBsnMirrorVer10.java
new file mode 100644
index 0000000..374feb9
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionBsnMirrorVer10.java
@@ -0,0 +1,412 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFActionBsnMirrorVer10 implements OFActionBsnMirror {
+    private static final Logger logger = LoggerFactory.getLogger(OFActionBsnMirrorVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 24;
+
+        private final static OFPort DEFAULT_DEST_PORT = OFPort.ANY;
+        private final static long DEFAULT_VLAN_TAG = 0x0L;
+        private final static short DEFAULT_COPY_STAGE = (short) 0x0;
+
+    // OF message fields
+    private final OFPort destPort;
+    private final long vlanTag;
+    private final short copyStage;
+//
+    // Immutable default instance
+    final static OFActionBsnMirrorVer10 DEFAULT = new OFActionBsnMirrorVer10(
+        DEFAULT_DEST_PORT, DEFAULT_VLAN_TAG, DEFAULT_COPY_STAGE
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFActionBsnMirrorVer10(OFPort destPort, long vlanTag, short copyStage) {
+        this.destPort = destPort;
+        this.vlanTag = vlanTag;
+        this.copyStage = copyStage;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFActionType getType() {
+        return OFActionType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1L;
+    }
+
+    @Override
+    public OFPort getDestPort() {
+        return destPort;
+    }
+
+    @Override
+    public long getVlanTag() {
+        return vlanTag;
+    }
+
+    @Override
+    public short getCopyStage() {
+        return copyStage;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    public OFActionBsnMirror.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFActionBsnMirror.Builder {
+        final OFActionBsnMirrorVer10 parentMessage;
+
+        // OF message fields
+        private boolean destPortSet;
+        private OFPort destPort;
+        private boolean vlanTagSet;
+        private long vlanTag;
+        private boolean copyStageSet;
+        private short copyStage;
+
+        BuilderWithParent(OFActionBsnMirrorVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1L;
+    }
+
+    @Override
+    public OFPort getDestPort() {
+        return destPort;
+    }
+
+    @Override
+    public OFActionBsnMirror.Builder setDestPort(OFPort destPort) {
+        this.destPort = destPort;
+        this.destPortSet = true;
+        return this;
+    }
+    @Override
+    public long getVlanTag() {
+        return vlanTag;
+    }
+
+    @Override
+    public OFActionBsnMirror.Builder setVlanTag(long vlanTag) {
+        this.vlanTag = vlanTag;
+        this.vlanTagSet = true;
+        return this;
+    }
+    @Override
+    public short getCopyStage() {
+        return copyStage;
+    }
+
+    @Override
+    public OFActionBsnMirror.Builder setCopyStage(short copyStage) {
+        this.copyStage = copyStage;
+        this.copyStageSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+        @Override
+        public OFActionBsnMirror build() {
+                OFPort destPort = this.destPortSet ? this.destPort : parentMessage.destPort;
+                if(destPort == null)
+                    throw new NullPointerException("Property destPort must not be null");
+                long vlanTag = this.vlanTagSet ? this.vlanTag : parentMessage.vlanTag;
+                short copyStage = this.copyStageSet ? this.copyStage : parentMessage.copyStage;
+
+                //
+                return new OFActionBsnMirrorVer10(
+                    destPort,
+                    vlanTag,
+                    copyStage
+                );
+        }
+
+    }
+
+    static class Builder implements OFActionBsnMirror.Builder {
+        // OF message fields
+        private boolean destPortSet;
+        private OFPort destPort;
+        private boolean vlanTagSet;
+        private long vlanTag;
+        private boolean copyStageSet;
+        private short copyStage;
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1L;
+    }
+
+    @Override
+    public OFPort getDestPort() {
+        return destPort;
+    }
+
+    @Override
+    public OFActionBsnMirror.Builder setDestPort(OFPort destPort) {
+        this.destPort = destPort;
+        this.destPortSet = true;
+        return this;
+    }
+    @Override
+    public long getVlanTag() {
+        return vlanTag;
+    }
+
+    @Override
+    public OFActionBsnMirror.Builder setVlanTag(long vlanTag) {
+        this.vlanTag = vlanTag;
+        this.vlanTagSet = true;
+        return this;
+    }
+    @Override
+    public short getCopyStage() {
+        return copyStage;
+    }
+
+    @Override
+    public OFActionBsnMirror.Builder setCopyStage(short copyStage) {
+        this.copyStage = copyStage;
+        this.copyStageSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+//
+        @Override
+        public OFActionBsnMirror build() {
+            OFPort destPort = this.destPortSet ? this.destPort : DEFAULT_DEST_PORT;
+            if(destPort == null)
+                throw new NullPointerException("Property destPort must not be null");
+            long vlanTag = this.vlanTagSet ? this.vlanTag : DEFAULT_VLAN_TAG;
+            short copyStage = this.copyStageSet ? this.copyStage : DEFAULT_COPY_STAGE;
+
+
+            return new OFActionBsnMirrorVer10(
+                    destPort,
+                    vlanTag,
+                    copyStage
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFActionBsnMirror> {
+        @Override
+        public OFActionBsnMirror readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 65535
+            short type = bb.readShort();
+            if(type != (short) 0xffff)
+                throw new OFParseError("Wrong type: Expected=OFActionType.EXPERIMENTER(65535), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 24)
+                throw new OFParseError("Wrong length: Expected=24(24), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x1L
+            int subtype = bb.readInt();
+            if(subtype != 0x1)
+                throw new OFParseError("Wrong subtype: Expected=0x1L(0x1L), got="+subtype);
+            OFPort destPort = OFPort.read2Bytes(bb);
+            long vlanTag = U32.f(bb.readInt());
+            short copyStage = U8.f(bb.readByte());
+            // pad: 3 bytes
+            bb.skipBytes(3);
+
+            OFActionBsnMirrorVer10 actionBsnMirrorVer10 = new OFActionBsnMirrorVer10(
+                    destPort,
+                      vlanTag,
+                      copyStage
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", actionBsnMirrorVer10);
+            return actionBsnMirrorVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFActionBsnMirrorVer10Funnel FUNNEL = new OFActionBsnMirrorVer10Funnel();
+    static class OFActionBsnMirrorVer10Funnel implements Funnel<OFActionBsnMirrorVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFActionBsnMirrorVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 65535
+            sink.putShort((short) 0xffff);
+            // fixed value property length = 24
+            sink.putShort((short) 0x18);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x1L
+            sink.putInt(0x1);
+            message.destPort.putTo(sink);
+            sink.putLong(message.vlanTag);
+            sink.putShort(message.copyStage);
+            // skip pad (3 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFActionBsnMirrorVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFActionBsnMirrorVer10 message) {
+            // fixed value property type = 65535
+            bb.writeShort((short) 0xffff);
+            // fixed value property length = 24
+            bb.writeShort((short) 0x18);
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x1L
+            bb.writeInt(0x1);
+            message.destPort.write2Bytes(bb);
+            bb.writeInt(U32.t(message.vlanTag));
+            bb.writeByte(U8.t(message.copyStage));
+            // pad: 3 bytes
+            bb.writeZero(3);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFActionBsnMirrorVer10(");
+        b.append("destPort=").append(destPort);
+        b.append(", ");
+        b.append("vlanTag=").append(vlanTag);
+        b.append(", ");
+        b.append("copyStage=").append(copyStage);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFActionBsnMirrorVer10 other = (OFActionBsnMirrorVer10) obj;
+
+        if (destPort == null) {
+            if (other.destPort != null)
+                return false;
+        } else if (!destPort.equals(other.destPort))
+            return false;
+        if( vlanTag != other.vlanTag)
+            return false;
+        if( copyStage != other.copyStage)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime * result + ((destPort == null) ? 0 : destPort.hashCode());
+        result = prime *  (int) (vlanTag ^ (vlanTag >>> 32));
+        result = prime * result + copyStage;
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionBsnSetTunnelDstVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionBsnSetTunnelDstVer10.java
new file mode 100644
index 0000000..add313c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionBsnSetTunnelDstVer10.java
@@ -0,0 +1,306 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFActionBsnSetTunnelDstVer10 implements OFActionBsnSetTunnelDst {
+    private static final Logger logger = LoggerFactory.getLogger(OFActionBsnSetTunnelDstVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 16;
+
+        private final static long DEFAULT_DST = 0x0L;
+
+    // OF message fields
+    private final long dst;
+//
+    // Immutable default instance
+    final static OFActionBsnSetTunnelDstVer10 DEFAULT = new OFActionBsnSetTunnelDstVer10(
+        DEFAULT_DST
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFActionBsnSetTunnelDstVer10(long dst) {
+        this.dst = dst;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFActionType getType() {
+        return OFActionType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x2L;
+    }
+
+    @Override
+    public long getDst() {
+        return dst;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    public OFActionBsnSetTunnelDst.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFActionBsnSetTunnelDst.Builder {
+        final OFActionBsnSetTunnelDstVer10 parentMessage;
+
+        // OF message fields
+        private boolean dstSet;
+        private long dst;
+
+        BuilderWithParent(OFActionBsnSetTunnelDstVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x2L;
+    }
+
+    @Override
+    public long getDst() {
+        return dst;
+    }
+
+    @Override
+    public OFActionBsnSetTunnelDst.Builder setDst(long dst) {
+        this.dst = dst;
+        this.dstSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+        @Override
+        public OFActionBsnSetTunnelDst build() {
+                long dst = this.dstSet ? this.dst : parentMessage.dst;
+
+                //
+                return new OFActionBsnSetTunnelDstVer10(
+                    dst
+                );
+        }
+
+    }
+
+    static class Builder implements OFActionBsnSetTunnelDst.Builder {
+        // OF message fields
+        private boolean dstSet;
+        private long dst;
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x2L;
+    }
+
+    @Override
+    public long getDst() {
+        return dst;
+    }
+
+    @Override
+    public OFActionBsnSetTunnelDst.Builder setDst(long dst) {
+        this.dst = dst;
+        this.dstSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+//
+        @Override
+        public OFActionBsnSetTunnelDst build() {
+            long dst = this.dstSet ? this.dst : DEFAULT_DST;
+
+
+            return new OFActionBsnSetTunnelDstVer10(
+                    dst
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFActionBsnSetTunnelDst> {
+        @Override
+        public OFActionBsnSetTunnelDst readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 65535
+            short type = bb.readShort();
+            if(type != (short) 0xffff)
+                throw new OFParseError("Wrong type: Expected=OFActionType.EXPERIMENTER(65535), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 16)
+                throw new OFParseError("Wrong length: Expected=16(16), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x2L
+            int subtype = bb.readInt();
+            if(subtype != 0x2)
+                throw new OFParseError("Wrong subtype: Expected=0x2L(0x2L), got="+subtype);
+            long dst = U32.f(bb.readInt());
+
+            OFActionBsnSetTunnelDstVer10 actionBsnSetTunnelDstVer10 = new OFActionBsnSetTunnelDstVer10(
+                    dst
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", actionBsnSetTunnelDstVer10);
+            return actionBsnSetTunnelDstVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFActionBsnSetTunnelDstVer10Funnel FUNNEL = new OFActionBsnSetTunnelDstVer10Funnel();
+    static class OFActionBsnSetTunnelDstVer10Funnel implements Funnel<OFActionBsnSetTunnelDstVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFActionBsnSetTunnelDstVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 65535
+            sink.putShort((short) 0xffff);
+            // fixed value property length = 16
+            sink.putShort((short) 0x10);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x2L
+            sink.putInt(0x2);
+            sink.putLong(message.dst);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFActionBsnSetTunnelDstVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFActionBsnSetTunnelDstVer10 message) {
+            // fixed value property type = 65535
+            bb.writeShort((short) 0xffff);
+            // fixed value property length = 16
+            bb.writeShort((short) 0x10);
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x2L
+            bb.writeInt(0x2);
+            bb.writeInt(U32.t(message.dst));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFActionBsnSetTunnelDstVer10(");
+        b.append("dst=").append(dst);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFActionBsnSetTunnelDstVer10 other = (OFActionBsnSetTunnelDstVer10) obj;
+
+        if( dst != other.dst)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (dst ^ (dst >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionBsnVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionBsnVer10.java
new file mode 100644
index 0000000..14a7001
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionBsnVer10.java
@@ -0,0 +1,71 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_virtual_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+import java.util.Set;
+
+abstract class OFActionBsnVer10 {
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 16;
+
+
+    public final static OFActionBsnVer10.Reader READER = new Reader();
+
+    static class Reader implements OFMessageReader<OFActionBsn> {
+        @Override
+        public OFActionBsn readFrom(ChannelBuffer bb) throws OFParseError {
+            if(bb.readableBytes() < MINIMUM_LENGTH)
+                return null;
+            int start = bb.readerIndex();
+            // fixed value property type == 65535
+            short type = bb.readShort();
+            if(type != (short) 0xffff)
+                throw new OFParseError("Wrong type: Expected=OFActionType.EXPERIMENTER(65535), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            int subtype = bb.readInt();
+            bb.readerIndex(start);
+            switch(subtype) {
+               case 0x4:
+                   // discriminator value 0x4L=0x4L for class OFActionBsnChecksumVer10
+                   return OFActionBsnChecksumVer10.READER.readFrom(bb);
+               case 0x1:
+                   // discriminator value 0x1L=0x1L for class OFActionBsnMirrorVer10
+                   return OFActionBsnMirrorVer10.READER.readFrom(bb);
+               case 0x2:
+                   // discriminator value 0x2L=0x2L for class OFActionBsnSetTunnelDstVer10
+                   return OFActionBsnSetTunnelDstVer10.READER.readFrom(bb);
+               default:
+                   throw new OFParseError("Unknown value for discriminator subtype of class OFActionBsnVer10: " + subtype);
+            }
+        }
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionEnqueueVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionEnqueueVer10.java
new file mode 100644
index 0000000..650f3ba
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionEnqueueVer10.java
@@ -0,0 +1,319 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFActionEnqueueVer10 implements OFActionEnqueue {
+    private static final Logger logger = LoggerFactory.getLogger(OFActionEnqueueVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 16;
+
+        private final static OFPort DEFAULT_PORT = OFPort.ANY;
+        private final static long DEFAULT_QUEUE_ID = 0x0L;
+
+    // OF message fields
+    private final OFPort port;
+    private final long queueId;
+//
+    // Immutable default instance
+    final static OFActionEnqueueVer10 DEFAULT = new OFActionEnqueueVer10(
+        DEFAULT_PORT, DEFAULT_QUEUE_ID
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFActionEnqueueVer10(OFPort port, long queueId) {
+        this.port = port;
+        this.queueId = queueId;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFActionType getType() {
+        return OFActionType.ENQUEUE;
+    }
+
+    @Override
+    public OFPort getPort() {
+        return port;
+    }
+
+    @Override
+    public long getQueueId() {
+        return queueId;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    public OFActionEnqueue.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFActionEnqueue.Builder {
+        final OFActionEnqueueVer10 parentMessage;
+
+        // OF message fields
+        private boolean portSet;
+        private OFPort port;
+        private boolean queueIdSet;
+        private long queueId;
+
+        BuilderWithParent(OFActionEnqueueVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.ENQUEUE;
+    }
+
+    @Override
+    public OFPort getPort() {
+        return port;
+    }
+
+    @Override
+    public OFActionEnqueue.Builder setPort(OFPort port) {
+        this.port = port;
+        this.portSet = true;
+        return this;
+    }
+    @Override
+    public long getQueueId() {
+        return queueId;
+    }
+
+    @Override
+    public OFActionEnqueue.Builder setQueueId(long queueId) {
+        this.queueId = queueId;
+        this.queueIdSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+        @Override
+        public OFActionEnqueue build() {
+                OFPort port = this.portSet ? this.port : parentMessage.port;
+                if(port == null)
+                    throw new NullPointerException("Property port must not be null");
+                long queueId = this.queueIdSet ? this.queueId : parentMessage.queueId;
+
+                //
+                return new OFActionEnqueueVer10(
+                    port,
+                    queueId
+                );
+        }
+
+    }
+
+    static class Builder implements OFActionEnqueue.Builder {
+        // OF message fields
+        private boolean portSet;
+        private OFPort port;
+        private boolean queueIdSet;
+        private long queueId;
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.ENQUEUE;
+    }
+
+    @Override
+    public OFPort getPort() {
+        return port;
+    }
+
+    @Override
+    public OFActionEnqueue.Builder setPort(OFPort port) {
+        this.port = port;
+        this.portSet = true;
+        return this;
+    }
+    @Override
+    public long getQueueId() {
+        return queueId;
+    }
+
+    @Override
+    public OFActionEnqueue.Builder setQueueId(long queueId) {
+        this.queueId = queueId;
+        this.queueIdSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+//
+        @Override
+        public OFActionEnqueue build() {
+            OFPort port = this.portSet ? this.port : DEFAULT_PORT;
+            if(port == null)
+                throw new NullPointerException("Property port must not be null");
+            long queueId = this.queueIdSet ? this.queueId : DEFAULT_QUEUE_ID;
+
+
+            return new OFActionEnqueueVer10(
+                    port,
+                    queueId
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFActionEnqueue> {
+        @Override
+        public OFActionEnqueue readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 11
+            short type = bb.readShort();
+            if(type != (short) 0xb)
+                throw new OFParseError("Wrong type: Expected=OFActionType.ENQUEUE(11), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 16)
+                throw new OFParseError("Wrong length: Expected=16(16), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            OFPort port = OFPort.read2Bytes(bb);
+            // pad: 6 bytes
+            bb.skipBytes(6);
+            long queueId = U32.f(bb.readInt());
+
+            OFActionEnqueueVer10 actionEnqueueVer10 = new OFActionEnqueueVer10(
+                    port,
+                      queueId
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", actionEnqueueVer10);
+            return actionEnqueueVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFActionEnqueueVer10Funnel FUNNEL = new OFActionEnqueueVer10Funnel();
+    static class OFActionEnqueueVer10Funnel implements Funnel<OFActionEnqueueVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFActionEnqueueVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 11
+            sink.putShort((short) 0xb);
+            // fixed value property length = 16
+            sink.putShort((short) 0x10);
+            message.port.putTo(sink);
+            // skip pad (6 bytes)
+            sink.putLong(message.queueId);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFActionEnqueueVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFActionEnqueueVer10 message) {
+            // fixed value property type = 11
+            bb.writeShort((short) 0xb);
+            // fixed value property length = 16
+            bb.writeShort((short) 0x10);
+            message.port.write2Bytes(bb);
+            // pad: 6 bytes
+            bb.writeZero(6);
+            bb.writeInt(U32.t(message.queueId));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFActionEnqueueVer10(");
+        b.append("port=").append(port);
+        b.append(", ");
+        b.append("queueId=").append(queueId);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFActionEnqueueVer10 other = (OFActionEnqueueVer10) obj;
+
+        if (port == null) {
+            if (other.port != null)
+                return false;
+        } else if (!port.equals(other.port))
+            return false;
+        if( queueId != other.queueId)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime * result + ((port == null) ? 0 : port.hashCode());
+        result = prime *  (int) (queueId ^ (queueId >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionExperimenterVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionExperimenterVer10.java
new file mode 100644
index 0000000..e0b1bf2
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionExperimenterVer10.java
@@ -0,0 +1,63 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_virtual_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+abstract class OFActionExperimenterVer10 {
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 8;
+
+
+    public final static OFActionExperimenterVer10.Reader READER = new Reader();
+
+    static class Reader implements OFMessageReader<OFActionExperimenter> {
+        @Override
+        public OFActionExperimenter readFrom(ChannelBuffer bb) throws OFParseError {
+            if(bb.readableBytes() < MINIMUM_LENGTH)
+                return null;
+            int start = bb.readerIndex();
+            // fixed value property type == 65535
+            short type = bb.readShort();
+            if(type != (short) 0xffff)
+                throw new OFParseError("Wrong type: Expected=OFActionType.EXPERIMENTER(65535), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            int experimenter = bb.readInt();
+            bb.readerIndex(start);
+            switch(experimenter) {
+               case 0x5c16c7:
+                   // discriminator value 0x5c16c7L=0x5c16c7L for class OFActionBsnVer10
+                   return OFActionBsnVer10.READER.readFrom(bb);
+               case 0x2320:
+                   // discriminator value 0x2320L=0x2320L for class OFActionNiciraVer10
+                   return OFActionNiciraVer10.READER.readFrom(bb);
+               default:
+                   throw new OFParseError("Unknown value for discriminator experimenter of class OFActionExperimenterVer10: " + experimenter);
+            }
+        }
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionIdsVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionIdsVer10.java
new file mode 100644
index 0000000..cde6599
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionIdsVer10.java
@@ -0,0 +1,123 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_factory_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+
+
+public class OFActionIdsVer10 implements OFActionIds {
+    public final static OFActionIdsVer10 INSTANCE = new OFActionIdsVer10();
+
+
+
+
+    public OFActionIdBsnChecksum bsnChecksum() {
+        throw new UnsupportedOperationException("OFActionIdBsnChecksum not supported in version 1.0");
+    }
+
+    public OFActionIdBsnMirror bsnMirror() {
+        throw new UnsupportedOperationException("OFActionIdBsnMirror not supported in version 1.0");
+    }
+
+    public OFActionIdBsnSetTunnelDst bsnSetTunnelDst() {
+        throw new UnsupportedOperationException("OFActionIdBsnSetTunnelDst not supported in version 1.0");
+    }
+
+    public OFActionIdCopyTtlIn copyTtlIn() {
+        throw new UnsupportedOperationException("OFActionIdCopyTtlIn not supported in version 1.0");
+    }
+
+    public OFActionIdCopyTtlOut copyTtlOut() {
+        throw new UnsupportedOperationException("OFActionIdCopyTtlOut not supported in version 1.0");
+    }
+
+    public OFActionIdDecMplsTtl decMplsTtl() {
+        throw new UnsupportedOperationException("OFActionIdDecMplsTtl not supported in version 1.0");
+    }
+
+    public OFActionIdDecNwTtl decNwTtl() {
+        throw new UnsupportedOperationException("OFActionIdDecNwTtl not supported in version 1.0");
+    }
+
+    public OFActionIdGroup group() {
+        throw new UnsupportedOperationException("OFActionIdGroup not supported in version 1.0");
+    }
+
+    public OFActionIdNiciraDecTtl niciraDecTtl() {
+        throw new UnsupportedOperationException("OFActionIdNiciraDecTtl not supported in version 1.0");
+    }
+
+    public OFActionIdOutput output() {
+        throw new UnsupportedOperationException("OFActionIdOutput not supported in version 1.0");
+    }
+
+    public OFActionIdPopMpls popMpls() {
+        throw new UnsupportedOperationException("OFActionIdPopMpls not supported in version 1.0");
+    }
+
+    public OFActionIdPopPbb popPbb() {
+        throw new UnsupportedOperationException("OFActionIdPopPbb not supported in version 1.0");
+    }
+
+    public OFActionIdPopVlan popVlan() {
+        throw new UnsupportedOperationException("OFActionIdPopVlan not supported in version 1.0");
+    }
+
+    public OFActionIdPushMpls pushMpls() {
+        throw new UnsupportedOperationException("OFActionIdPushMpls not supported in version 1.0");
+    }
+
+    public OFActionIdPushPbb pushPbb() {
+        throw new UnsupportedOperationException("OFActionIdPushPbb not supported in version 1.0");
+    }
+
+    public OFActionIdPushVlan pushVlan() {
+        throw new UnsupportedOperationException("OFActionIdPushVlan not supported in version 1.0");
+    }
+
+    public OFActionIdSetField setField() {
+        throw new UnsupportedOperationException("OFActionIdSetField not supported in version 1.0");
+    }
+
+    public OFActionIdSetMplsTtl setMplsTtl() {
+        throw new UnsupportedOperationException("OFActionIdSetMplsTtl not supported in version 1.0");
+    }
+
+    public OFActionIdSetNwTtl setNwTtl() {
+        throw new UnsupportedOperationException("OFActionIdSetNwTtl not supported in version 1.0");
+    }
+
+    public OFActionIdSetQueue setQueue() {
+        throw new UnsupportedOperationException("OFActionIdSetQueue not supported in version 1.0");
+    }
+
+    public OFMessageReader<OFActionId> getReader() {
+        throw new UnsupportedOperationException("Reader<OFActionId> not supported in version 1.0");
+    }
+
+
+    public OFVersion getVersion() {
+            return OFVersion.OF_10;
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionNiciraDecTtlVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionNiciraDecTtlVer10.java
new file mode 100644
index 0000000..c72dcc6
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionNiciraDecTtlVer10.java
@@ -0,0 +1,192 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFActionNiciraDecTtlVer10 implements OFActionNiciraDecTtl {
+    private static final Logger logger = LoggerFactory.getLogger(OFActionNiciraDecTtlVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 16;
+
+
+    // OF message fields
+//
+    // Immutable default instance
+    final static OFActionNiciraDecTtlVer10 DEFAULT = new OFActionNiciraDecTtlVer10(
+
+    );
+
+    final static OFActionNiciraDecTtlVer10 INSTANCE = new OFActionNiciraDecTtlVer10();
+    // private empty constructor - use shared instance!
+    private OFActionNiciraDecTtlVer10() {
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFActionType getType() {
+        return OFActionType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x2320L;
+    }
+
+    @Override
+    public int getSubtype() {
+        return 0x12;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    // no data members - do not support builder
+    public OFActionNiciraDecTtl.Builder createBuilder() {
+        throw new UnsupportedOperationException("OFActionNiciraDecTtlVer10 has no mutable properties -- builder unneeded");
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFActionNiciraDecTtl> {
+        @Override
+        public OFActionNiciraDecTtl readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 65535
+            short type = bb.readShort();
+            if(type != (short) 0xffff)
+                throw new OFParseError("Wrong type: Expected=OFActionType.EXPERIMENTER(65535), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 16)
+                throw new OFParseError("Wrong length: Expected=16(16), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            // fixed value property experimenter == 0x2320L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x2320)
+                throw new OFParseError("Wrong experimenter: Expected=0x2320L(0x2320L), got="+experimenter);
+            // fixed value property subtype == 0x12
+            short subtype = bb.readShort();
+            if(subtype != (short) 0x12)
+                throw new OFParseError("Wrong subtype: Expected=0x12(0x12), got="+subtype);
+            // pad: 2 bytes
+            bb.skipBytes(2);
+            // pad: 4 bytes
+            bb.skipBytes(4);
+
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - returning shared instance={}", INSTANCE);
+            return INSTANCE;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFActionNiciraDecTtlVer10Funnel FUNNEL = new OFActionNiciraDecTtlVer10Funnel();
+    static class OFActionNiciraDecTtlVer10Funnel implements Funnel<OFActionNiciraDecTtlVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFActionNiciraDecTtlVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 65535
+            sink.putShort((short) 0xffff);
+            // fixed value property length = 16
+            sink.putShort((short) 0x10);
+            // fixed value property experimenter = 0x2320L
+            sink.putInt(0x2320);
+            // fixed value property subtype = 0x12
+            sink.putShort((short) 0x12);
+            // skip pad (2 bytes)
+            // skip pad (4 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFActionNiciraDecTtlVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFActionNiciraDecTtlVer10 message) {
+            // fixed value property type = 65535
+            bb.writeShort((short) 0xffff);
+            // fixed value property length = 16
+            bb.writeShort((short) 0x10);
+            // fixed value property experimenter = 0x2320L
+            bb.writeInt(0x2320);
+            // fixed value property subtype = 0x12
+            bb.writeShort((short) 0x12);
+            // pad: 2 bytes
+            bb.writeZero(2);
+            // pad: 4 bytes
+            bb.writeZero(4);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFActionNiciraDecTtlVer10(");
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionNiciraVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionNiciraVer10.java
new file mode 100644
index 0000000..2023afa
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionNiciraVer10.java
@@ -0,0 +1,64 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_virtual_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+abstract class OFActionNiciraVer10 {
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 16;
+
+
+    public final static OFActionNiciraVer10.Reader READER = new Reader();
+
+    static class Reader implements OFMessageReader<OFActionNicira> {
+        @Override
+        public OFActionNicira readFrom(ChannelBuffer bb) throws OFParseError {
+            if(bb.readableBytes() < MINIMUM_LENGTH)
+                return null;
+            int start = bb.readerIndex();
+            // fixed value property type == 65535
+            short type = bb.readShort();
+            if(type != (short) 0xffff)
+                throw new OFParseError("Wrong type: Expected=OFActionType.EXPERIMENTER(65535), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            // fixed value property experimenter == 0x2320L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x2320)
+                throw new OFParseError("Wrong experimenter: Expected=0x2320L(0x2320L), got="+experimenter);
+            short subtype = bb.readShort();
+            bb.readerIndex(start);
+            switch(subtype) {
+               case (short) 0x12:
+                   // discriminator value 0x12=0x12 for class OFActionNiciraDecTtlVer10
+                   return OFActionNiciraDecTtlVer10.READER.readFrom(bb);
+               default:
+                   throw new OFParseError("Unknown value for discriminator subtype of class OFActionNiciraVer10: " + subtype);
+            }
+        }
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionOutputVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionOutputVer10.java
new file mode 100644
index 0000000..e224bc8
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionOutputVer10.java
@@ -0,0 +1,314 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFActionOutputVer10 implements OFActionOutput {
+    private static final Logger logger = LoggerFactory.getLogger(OFActionOutputVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 8;
+
+        private final static OFPort DEFAULT_PORT = OFPort.ANY;
+        private final static int DEFAULT_MAX_LEN = 0x0;
+
+    // OF message fields
+    private final OFPort port;
+    private final int maxLen;
+//
+    // Immutable default instance
+    final static OFActionOutputVer10 DEFAULT = new OFActionOutputVer10(
+        DEFAULT_PORT, DEFAULT_MAX_LEN
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFActionOutputVer10(OFPort port, int maxLen) {
+        this.port = port;
+        this.maxLen = maxLen;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFActionType getType() {
+        return OFActionType.OUTPUT;
+    }
+
+    @Override
+    public OFPort getPort() {
+        return port;
+    }
+
+    @Override
+    public int getMaxLen() {
+        return maxLen;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    public OFActionOutput.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFActionOutput.Builder {
+        final OFActionOutputVer10 parentMessage;
+
+        // OF message fields
+        private boolean portSet;
+        private OFPort port;
+        private boolean maxLenSet;
+        private int maxLen;
+
+        BuilderWithParent(OFActionOutputVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.OUTPUT;
+    }
+
+    @Override
+    public OFPort getPort() {
+        return port;
+    }
+
+    @Override
+    public OFActionOutput.Builder setPort(OFPort port) {
+        this.port = port;
+        this.portSet = true;
+        return this;
+    }
+    @Override
+    public int getMaxLen() {
+        return maxLen;
+    }
+
+    @Override
+    public OFActionOutput.Builder setMaxLen(int maxLen) {
+        this.maxLen = maxLen;
+        this.maxLenSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+        @Override
+        public OFActionOutput build() {
+                OFPort port = this.portSet ? this.port : parentMessage.port;
+                if(port == null)
+                    throw new NullPointerException("Property port must not be null");
+                int maxLen = this.maxLenSet ? this.maxLen : parentMessage.maxLen;
+
+                //
+                return new OFActionOutputVer10(
+                    port,
+                    maxLen
+                );
+        }
+
+    }
+
+    static class Builder implements OFActionOutput.Builder {
+        // OF message fields
+        private boolean portSet;
+        private OFPort port;
+        private boolean maxLenSet;
+        private int maxLen;
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.OUTPUT;
+    }
+
+    @Override
+    public OFPort getPort() {
+        return port;
+    }
+
+    @Override
+    public OFActionOutput.Builder setPort(OFPort port) {
+        this.port = port;
+        this.portSet = true;
+        return this;
+    }
+    @Override
+    public int getMaxLen() {
+        return maxLen;
+    }
+
+    @Override
+    public OFActionOutput.Builder setMaxLen(int maxLen) {
+        this.maxLen = maxLen;
+        this.maxLenSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+//
+        @Override
+        public OFActionOutput build() {
+            OFPort port = this.portSet ? this.port : DEFAULT_PORT;
+            if(port == null)
+                throw new NullPointerException("Property port must not be null");
+            int maxLen = this.maxLenSet ? this.maxLen : DEFAULT_MAX_LEN;
+
+
+            return new OFActionOutputVer10(
+                    port,
+                    maxLen
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFActionOutput> {
+        @Override
+        public OFActionOutput readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 0
+            short type = bb.readShort();
+            if(type != (short) 0x0)
+                throw new OFParseError("Wrong type: Expected=OFActionType.OUTPUT(0), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 8)
+                throw new OFParseError("Wrong length: Expected=8(8), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            OFPort port = OFPort.read2Bytes(bb);
+            int maxLen = U16.f(bb.readShort());
+
+            OFActionOutputVer10 actionOutputVer10 = new OFActionOutputVer10(
+                    port,
+                      maxLen
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", actionOutputVer10);
+            return actionOutputVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFActionOutputVer10Funnel FUNNEL = new OFActionOutputVer10Funnel();
+    static class OFActionOutputVer10Funnel implements Funnel<OFActionOutputVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFActionOutputVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 0
+            sink.putShort((short) 0x0);
+            // fixed value property length = 8
+            sink.putShort((short) 0x8);
+            message.port.putTo(sink);
+            sink.putInt(message.maxLen);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFActionOutputVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFActionOutputVer10 message) {
+            // fixed value property type = 0
+            bb.writeShort((short) 0x0);
+            // fixed value property length = 8
+            bb.writeShort((short) 0x8);
+            message.port.write2Bytes(bb);
+            bb.writeShort(U16.t(message.maxLen));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFActionOutputVer10(");
+        b.append("port=").append(port);
+        b.append(", ");
+        b.append("maxLen=").append(maxLen);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFActionOutputVer10 other = (OFActionOutputVer10) obj;
+
+        if (port == null) {
+            if (other.port != null)
+                return false;
+        } else if (!port.equals(other.port))
+            return false;
+        if( maxLen != other.maxLen)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime * result + ((port == null) ? 0 : port.hashCode());
+        result = prime * result + maxLen;
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetDlDstVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetDlDstVer10.java
new file mode 100644
index 0000000..348da90
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetDlDstVer10.java
@@ -0,0 +1,272 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFActionSetDlDstVer10 implements OFActionSetDlDst {
+    private static final Logger logger = LoggerFactory.getLogger(OFActionSetDlDstVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 16;
+
+        private final static MacAddress DEFAULT_DL_ADDR = MacAddress.NONE;
+
+    // OF message fields
+    private final MacAddress dlAddr;
+//
+    // Immutable default instance
+    final static OFActionSetDlDstVer10 DEFAULT = new OFActionSetDlDstVer10(
+        DEFAULT_DL_ADDR
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFActionSetDlDstVer10(MacAddress dlAddr) {
+        this.dlAddr = dlAddr;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_DL_DST;
+    }
+
+    @Override
+    public MacAddress getDlAddr() {
+        return dlAddr;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    public OFActionSetDlDst.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFActionSetDlDst.Builder {
+        final OFActionSetDlDstVer10 parentMessage;
+
+        // OF message fields
+        private boolean dlAddrSet;
+        private MacAddress dlAddr;
+
+        BuilderWithParent(OFActionSetDlDstVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_DL_DST;
+    }
+
+    @Override
+    public MacAddress getDlAddr() {
+        return dlAddr;
+    }
+
+    @Override
+    public OFActionSetDlDst.Builder setDlAddr(MacAddress dlAddr) {
+        this.dlAddr = dlAddr;
+        this.dlAddrSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+        @Override
+        public OFActionSetDlDst build() {
+                MacAddress dlAddr = this.dlAddrSet ? this.dlAddr : parentMessage.dlAddr;
+                if(dlAddr == null)
+                    throw new NullPointerException("Property dlAddr must not be null");
+
+                //
+                return new OFActionSetDlDstVer10(
+                    dlAddr
+                );
+        }
+
+    }
+
+    static class Builder implements OFActionSetDlDst.Builder {
+        // OF message fields
+        private boolean dlAddrSet;
+        private MacAddress dlAddr;
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_DL_DST;
+    }
+
+    @Override
+    public MacAddress getDlAddr() {
+        return dlAddr;
+    }
+
+    @Override
+    public OFActionSetDlDst.Builder setDlAddr(MacAddress dlAddr) {
+        this.dlAddr = dlAddr;
+        this.dlAddrSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+//
+        @Override
+        public OFActionSetDlDst build() {
+            MacAddress dlAddr = this.dlAddrSet ? this.dlAddr : DEFAULT_DL_ADDR;
+            if(dlAddr == null)
+                throw new NullPointerException("Property dlAddr must not be null");
+
+
+            return new OFActionSetDlDstVer10(
+                    dlAddr
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFActionSetDlDst> {
+        @Override
+        public OFActionSetDlDst readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 5
+            short type = bb.readShort();
+            if(type != (short) 0x5)
+                throw new OFParseError("Wrong type: Expected=OFActionType.SET_DL_DST(5), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 16)
+                throw new OFParseError("Wrong length: Expected=16(16), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            MacAddress dlAddr = MacAddress.read6Bytes(bb);
+            // pad: 6 bytes
+            bb.skipBytes(6);
+
+            OFActionSetDlDstVer10 actionSetDlDstVer10 = new OFActionSetDlDstVer10(
+                    dlAddr
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", actionSetDlDstVer10);
+            return actionSetDlDstVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFActionSetDlDstVer10Funnel FUNNEL = new OFActionSetDlDstVer10Funnel();
+    static class OFActionSetDlDstVer10Funnel implements Funnel<OFActionSetDlDstVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFActionSetDlDstVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 5
+            sink.putShort((short) 0x5);
+            // fixed value property length = 16
+            sink.putShort((short) 0x10);
+            message.dlAddr.putTo(sink);
+            // skip pad (6 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFActionSetDlDstVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFActionSetDlDstVer10 message) {
+            // fixed value property type = 5
+            bb.writeShort((short) 0x5);
+            // fixed value property length = 16
+            bb.writeShort((short) 0x10);
+            message.dlAddr.write6Bytes(bb);
+            // pad: 6 bytes
+            bb.writeZero(6);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFActionSetDlDstVer10(");
+        b.append("dlAddr=").append(dlAddr);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFActionSetDlDstVer10 other = (OFActionSetDlDstVer10) obj;
+
+        if (dlAddr == null) {
+            if (other.dlAddr != null)
+                return false;
+        } else if (!dlAddr.equals(other.dlAddr))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime * result + ((dlAddr == null) ? 0 : dlAddr.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetDlSrcVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetDlSrcVer10.java
new file mode 100644
index 0000000..cc88013
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetDlSrcVer10.java
@@ -0,0 +1,272 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFActionSetDlSrcVer10 implements OFActionSetDlSrc {
+    private static final Logger logger = LoggerFactory.getLogger(OFActionSetDlSrcVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 16;
+
+        private final static MacAddress DEFAULT_DL_ADDR = MacAddress.NONE;
+
+    // OF message fields
+    private final MacAddress dlAddr;
+//
+    // Immutable default instance
+    final static OFActionSetDlSrcVer10 DEFAULT = new OFActionSetDlSrcVer10(
+        DEFAULT_DL_ADDR
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFActionSetDlSrcVer10(MacAddress dlAddr) {
+        this.dlAddr = dlAddr;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_DL_SRC;
+    }
+
+    @Override
+    public MacAddress getDlAddr() {
+        return dlAddr;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    public OFActionSetDlSrc.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFActionSetDlSrc.Builder {
+        final OFActionSetDlSrcVer10 parentMessage;
+
+        // OF message fields
+        private boolean dlAddrSet;
+        private MacAddress dlAddr;
+
+        BuilderWithParent(OFActionSetDlSrcVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_DL_SRC;
+    }
+
+    @Override
+    public MacAddress getDlAddr() {
+        return dlAddr;
+    }
+
+    @Override
+    public OFActionSetDlSrc.Builder setDlAddr(MacAddress dlAddr) {
+        this.dlAddr = dlAddr;
+        this.dlAddrSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+        @Override
+        public OFActionSetDlSrc build() {
+                MacAddress dlAddr = this.dlAddrSet ? this.dlAddr : parentMessage.dlAddr;
+                if(dlAddr == null)
+                    throw new NullPointerException("Property dlAddr must not be null");
+
+                //
+                return new OFActionSetDlSrcVer10(
+                    dlAddr
+                );
+        }
+
+    }
+
+    static class Builder implements OFActionSetDlSrc.Builder {
+        // OF message fields
+        private boolean dlAddrSet;
+        private MacAddress dlAddr;
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_DL_SRC;
+    }
+
+    @Override
+    public MacAddress getDlAddr() {
+        return dlAddr;
+    }
+
+    @Override
+    public OFActionSetDlSrc.Builder setDlAddr(MacAddress dlAddr) {
+        this.dlAddr = dlAddr;
+        this.dlAddrSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+//
+        @Override
+        public OFActionSetDlSrc build() {
+            MacAddress dlAddr = this.dlAddrSet ? this.dlAddr : DEFAULT_DL_ADDR;
+            if(dlAddr == null)
+                throw new NullPointerException("Property dlAddr must not be null");
+
+
+            return new OFActionSetDlSrcVer10(
+                    dlAddr
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFActionSetDlSrc> {
+        @Override
+        public OFActionSetDlSrc readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 4
+            short type = bb.readShort();
+            if(type != (short) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFActionType.SET_DL_SRC(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 16)
+                throw new OFParseError("Wrong length: Expected=16(16), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            MacAddress dlAddr = MacAddress.read6Bytes(bb);
+            // pad: 6 bytes
+            bb.skipBytes(6);
+
+            OFActionSetDlSrcVer10 actionSetDlSrcVer10 = new OFActionSetDlSrcVer10(
+                    dlAddr
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", actionSetDlSrcVer10);
+            return actionSetDlSrcVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFActionSetDlSrcVer10Funnel FUNNEL = new OFActionSetDlSrcVer10Funnel();
+    static class OFActionSetDlSrcVer10Funnel implements Funnel<OFActionSetDlSrcVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFActionSetDlSrcVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 4
+            sink.putShort((short) 0x4);
+            // fixed value property length = 16
+            sink.putShort((short) 0x10);
+            message.dlAddr.putTo(sink);
+            // skip pad (6 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFActionSetDlSrcVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFActionSetDlSrcVer10 message) {
+            // fixed value property type = 4
+            bb.writeShort((short) 0x4);
+            // fixed value property length = 16
+            bb.writeShort((short) 0x10);
+            message.dlAddr.write6Bytes(bb);
+            // pad: 6 bytes
+            bb.writeZero(6);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFActionSetDlSrcVer10(");
+        b.append("dlAddr=").append(dlAddr);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFActionSetDlSrcVer10 other = (OFActionSetDlSrcVer10) obj;
+
+        if (dlAddr == null) {
+            if (other.dlAddr != null)
+                return false;
+        } else if (!dlAddr.equals(other.dlAddr))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime * result + ((dlAddr == null) ? 0 : dlAddr.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetNwDstVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetNwDstVer10.java
new file mode 100644
index 0000000..f7a4d27
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetNwDstVer10.java
@@ -0,0 +1,267 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFActionSetNwDstVer10 implements OFActionSetNwDst {
+    private static final Logger logger = LoggerFactory.getLogger(OFActionSetNwDstVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 8;
+
+        private final static IPv4Address DEFAULT_NW_ADDR = IPv4Address.NONE;
+
+    // OF message fields
+    private final IPv4Address nwAddr;
+//
+    // Immutable default instance
+    final static OFActionSetNwDstVer10 DEFAULT = new OFActionSetNwDstVer10(
+        DEFAULT_NW_ADDR
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFActionSetNwDstVer10(IPv4Address nwAddr) {
+        this.nwAddr = nwAddr;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_NW_DST;
+    }
+
+    @Override
+    public IPv4Address getNwAddr() {
+        return nwAddr;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    public OFActionSetNwDst.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFActionSetNwDst.Builder {
+        final OFActionSetNwDstVer10 parentMessage;
+
+        // OF message fields
+        private boolean nwAddrSet;
+        private IPv4Address nwAddr;
+
+        BuilderWithParent(OFActionSetNwDstVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_NW_DST;
+    }
+
+    @Override
+    public IPv4Address getNwAddr() {
+        return nwAddr;
+    }
+
+    @Override
+    public OFActionSetNwDst.Builder setNwAddr(IPv4Address nwAddr) {
+        this.nwAddr = nwAddr;
+        this.nwAddrSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+        @Override
+        public OFActionSetNwDst build() {
+                IPv4Address nwAddr = this.nwAddrSet ? this.nwAddr : parentMessage.nwAddr;
+                if(nwAddr == null)
+                    throw new NullPointerException("Property nwAddr must not be null");
+
+                //
+                return new OFActionSetNwDstVer10(
+                    nwAddr
+                );
+        }
+
+    }
+
+    static class Builder implements OFActionSetNwDst.Builder {
+        // OF message fields
+        private boolean nwAddrSet;
+        private IPv4Address nwAddr;
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_NW_DST;
+    }
+
+    @Override
+    public IPv4Address getNwAddr() {
+        return nwAddr;
+    }
+
+    @Override
+    public OFActionSetNwDst.Builder setNwAddr(IPv4Address nwAddr) {
+        this.nwAddr = nwAddr;
+        this.nwAddrSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+//
+        @Override
+        public OFActionSetNwDst build() {
+            IPv4Address nwAddr = this.nwAddrSet ? this.nwAddr : DEFAULT_NW_ADDR;
+            if(nwAddr == null)
+                throw new NullPointerException("Property nwAddr must not be null");
+
+
+            return new OFActionSetNwDstVer10(
+                    nwAddr
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFActionSetNwDst> {
+        @Override
+        public OFActionSetNwDst readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 7
+            short type = bb.readShort();
+            if(type != (short) 0x7)
+                throw new OFParseError("Wrong type: Expected=OFActionType.SET_NW_DST(7), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 8)
+                throw new OFParseError("Wrong length: Expected=8(8), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            IPv4Address nwAddr = IPv4Address.read4Bytes(bb);
+
+            OFActionSetNwDstVer10 actionSetNwDstVer10 = new OFActionSetNwDstVer10(
+                    nwAddr
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", actionSetNwDstVer10);
+            return actionSetNwDstVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFActionSetNwDstVer10Funnel FUNNEL = new OFActionSetNwDstVer10Funnel();
+    static class OFActionSetNwDstVer10Funnel implements Funnel<OFActionSetNwDstVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFActionSetNwDstVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 7
+            sink.putShort((short) 0x7);
+            // fixed value property length = 8
+            sink.putShort((short) 0x8);
+            message.nwAddr.putTo(sink);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFActionSetNwDstVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFActionSetNwDstVer10 message) {
+            // fixed value property type = 7
+            bb.writeShort((short) 0x7);
+            // fixed value property length = 8
+            bb.writeShort((short) 0x8);
+            message.nwAddr.write4Bytes(bb);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFActionSetNwDstVer10(");
+        b.append("nwAddr=").append(nwAddr);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFActionSetNwDstVer10 other = (OFActionSetNwDstVer10) obj;
+
+        if (nwAddr == null) {
+            if (other.nwAddr != null)
+                return false;
+        } else if (!nwAddr.equals(other.nwAddr))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime * result + ((nwAddr == null) ? 0 : nwAddr.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetNwSrcVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetNwSrcVer10.java
new file mode 100644
index 0000000..4d30837
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetNwSrcVer10.java
@@ -0,0 +1,267 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFActionSetNwSrcVer10 implements OFActionSetNwSrc {
+    private static final Logger logger = LoggerFactory.getLogger(OFActionSetNwSrcVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 8;
+
+        private final static IPv4Address DEFAULT_NW_ADDR = IPv4Address.NONE;
+
+    // OF message fields
+    private final IPv4Address nwAddr;
+//
+    // Immutable default instance
+    final static OFActionSetNwSrcVer10 DEFAULT = new OFActionSetNwSrcVer10(
+        DEFAULT_NW_ADDR
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFActionSetNwSrcVer10(IPv4Address nwAddr) {
+        this.nwAddr = nwAddr;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_NW_SRC;
+    }
+
+    @Override
+    public IPv4Address getNwAddr() {
+        return nwAddr;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    public OFActionSetNwSrc.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFActionSetNwSrc.Builder {
+        final OFActionSetNwSrcVer10 parentMessage;
+
+        // OF message fields
+        private boolean nwAddrSet;
+        private IPv4Address nwAddr;
+
+        BuilderWithParent(OFActionSetNwSrcVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_NW_SRC;
+    }
+
+    @Override
+    public IPv4Address getNwAddr() {
+        return nwAddr;
+    }
+
+    @Override
+    public OFActionSetNwSrc.Builder setNwAddr(IPv4Address nwAddr) {
+        this.nwAddr = nwAddr;
+        this.nwAddrSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+        @Override
+        public OFActionSetNwSrc build() {
+                IPv4Address nwAddr = this.nwAddrSet ? this.nwAddr : parentMessage.nwAddr;
+                if(nwAddr == null)
+                    throw new NullPointerException("Property nwAddr must not be null");
+
+                //
+                return new OFActionSetNwSrcVer10(
+                    nwAddr
+                );
+        }
+
+    }
+
+    static class Builder implements OFActionSetNwSrc.Builder {
+        // OF message fields
+        private boolean nwAddrSet;
+        private IPv4Address nwAddr;
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_NW_SRC;
+    }
+
+    @Override
+    public IPv4Address getNwAddr() {
+        return nwAddr;
+    }
+
+    @Override
+    public OFActionSetNwSrc.Builder setNwAddr(IPv4Address nwAddr) {
+        this.nwAddr = nwAddr;
+        this.nwAddrSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+//
+        @Override
+        public OFActionSetNwSrc build() {
+            IPv4Address nwAddr = this.nwAddrSet ? this.nwAddr : DEFAULT_NW_ADDR;
+            if(nwAddr == null)
+                throw new NullPointerException("Property nwAddr must not be null");
+
+
+            return new OFActionSetNwSrcVer10(
+                    nwAddr
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFActionSetNwSrc> {
+        @Override
+        public OFActionSetNwSrc readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 6
+            short type = bb.readShort();
+            if(type != (short) 0x6)
+                throw new OFParseError("Wrong type: Expected=OFActionType.SET_NW_SRC(6), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 8)
+                throw new OFParseError("Wrong length: Expected=8(8), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            IPv4Address nwAddr = IPv4Address.read4Bytes(bb);
+
+            OFActionSetNwSrcVer10 actionSetNwSrcVer10 = new OFActionSetNwSrcVer10(
+                    nwAddr
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", actionSetNwSrcVer10);
+            return actionSetNwSrcVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFActionSetNwSrcVer10Funnel FUNNEL = new OFActionSetNwSrcVer10Funnel();
+    static class OFActionSetNwSrcVer10Funnel implements Funnel<OFActionSetNwSrcVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFActionSetNwSrcVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 6
+            sink.putShort((short) 0x6);
+            // fixed value property length = 8
+            sink.putShort((short) 0x8);
+            message.nwAddr.putTo(sink);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFActionSetNwSrcVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFActionSetNwSrcVer10 message) {
+            // fixed value property type = 6
+            bb.writeShort((short) 0x6);
+            // fixed value property length = 8
+            bb.writeShort((short) 0x8);
+            message.nwAddr.write4Bytes(bb);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFActionSetNwSrcVer10(");
+        b.append("nwAddr=").append(nwAddr);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFActionSetNwSrcVer10 other = (OFActionSetNwSrcVer10) obj;
+
+        if (nwAddr == null) {
+            if (other.nwAddr != null)
+                return false;
+        } else if (!nwAddr.equals(other.nwAddr))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime * result + ((nwAddr == null) ? 0 : nwAddr.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetNwTosVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetNwTosVer10.java
new file mode 100644
index 0000000..43493bb
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetNwTosVer10.java
@@ -0,0 +1,265 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFActionSetNwTosVer10 implements OFActionSetNwTos {
+    private static final Logger logger = LoggerFactory.getLogger(OFActionSetNwTosVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 8;
+
+        private final static short DEFAULT_NW_TOS = (short) 0x0;
+
+    // OF message fields
+    private final short nwTos;
+//
+    // Immutable default instance
+    final static OFActionSetNwTosVer10 DEFAULT = new OFActionSetNwTosVer10(
+        DEFAULT_NW_TOS
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFActionSetNwTosVer10(short nwTos) {
+        this.nwTos = nwTos;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_NW_TOS;
+    }
+
+    @Override
+    public short getNwTos() {
+        return nwTos;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    public OFActionSetNwTos.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFActionSetNwTos.Builder {
+        final OFActionSetNwTosVer10 parentMessage;
+
+        // OF message fields
+        private boolean nwTosSet;
+        private short nwTos;
+
+        BuilderWithParent(OFActionSetNwTosVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_NW_TOS;
+    }
+
+    @Override
+    public short getNwTos() {
+        return nwTos;
+    }
+
+    @Override
+    public OFActionSetNwTos.Builder setNwTos(short nwTos) {
+        this.nwTos = nwTos;
+        this.nwTosSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+        @Override
+        public OFActionSetNwTos build() {
+                short nwTos = this.nwTosSet ? this.nwTos : parentMessage.nwTos;
+
+                //
+                return new OFActionSetNwTosVer10(
+                    nwTos
+                );
+        }
+
+    }
+
+    static class Builder implements OFActionSetNwTos.Builder {
+        // OF message fields
+        private boolean nwTosSet;
+        private short nwTos;
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_NW_TOS;
+    }
+
+    @Override
+    public short getNwTos() {
+        return nwTos;
+    }
+
+    @Override
+    public OFActionSetNwTos.Builder setNwTos(short nwTos) {
+        this.nwTos = nwTos;
+        this.nwTosSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+//
+        @Override
+        public OFActionSetNwTos build() {
+            short nwTos = this.nwTosSet ? this.nwTos : DEFAULT_NW_TOS;
+
+
+            return new OFActionSetNwTosVer10(
+                    nwTos
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFActionSetNwTos> {
+        @Override
+        public OFActionSetNwTos readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 8
+            short type = bb.readShort();
+            if(type != (short) 0x8)
+                throw new OFParseError("Wrong type: Expected=OFActionType.SET_NW_TOS(8), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 8)
+                throw new OFParseError("Wrong length: Expected=8(8), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            short nwTos = U8.f(bb.readByte());
+            // pad: 3 bytes
+            bb.skipBytes(3);
+
+            OFActionSetNwTosVer10 actionSetNwTosVer10 = new OFActionSetNwTosVer10(
+                    nwTos
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", actionSetNwTosVer10);
+            return actionSetNwTosVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFActionSetNwTosVer10Funnel FUNNEL = new OFActionSetNwTosVer10Funnel();
+    static class OFActionSetNwTosVer10Funnel implements Funnel<OFActionSetNwTosVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFActionSetNwTosVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 8
+            sink.putShort((short) 0x8);
+            // fixed value property length = 8
+            sink.putShort((short) 0x8);
+            sink.putShort(message.nwTos);
+            // skip pad (3 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFActionSetNwTosVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFActionSetNwTosVer10 message) {
+            // fixed value property type = 8
+            bb.writeShort((short) 0x8);
+            // fixed value property length = 8
+            bb.writeShort((short) 0x8);
+            bb.writeByte(U8.t(message.nwTos));
+            // pad: 3 bytes
+            bb.writeZero(3);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFActionSetNwTosVer10(");
+        b.append("nwTos=").append(nwTos);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFActionSetNwTosVer10 other = (OFActionSetNwTosVer10) obj;
+
+        if( nwTos != other.nwTos)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime * result + nwTos;
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetTpDstVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetTpDstVer10.java
new file mode 100644
index 0000000..822c484
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetTpDstVer10.java
@@ -0,0 +1,272 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFActionSetTpDstVer10 implements OFActionSetTpDst {
+    private static final Logger logger = LoggerFactory.getLogger(OFActionSetTpDstVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 8;
+
+        private final static TransportPort DEFAULT_TP_PORT = TransportPort.NONE;
+
+    // OF message fields
+    private final TransportPort tpPort;
+//
+    // Immutable default instance
+    final static OFActionSetTpDstVer10 DEFAULT = new OFActionSetTpDstVer10(
+        DEFAULT_TP_PORT
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFActionSetTpDstVer10(TransportPort tpPort) {
+        this.tpPort = tpPort;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_TP_DST;
+    }
+
+    @Override
+    public TransportPort getTpPort() {
+        return tpPort;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    public OFActionSetTpDst.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFActionSetTpDst.Builder {
+        final OFActionSetTpDstVer10 parentMessage;
+
+        // OF message fields
+        private boolean tpPortSet;
+        private TransportPort tpPort;
+
+        BuilderWithParent(OFActionSetTpDstVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_TP_DST;
+    }
+
+    @Override
+    public TransportPort getTpPort() {
+        return tpPort;
+    }
+
+    @Override
+    public OFActionSetTpDst.Builder setTpPort(TransportPort tpPort) {
+        this.tpPort = tpPort;
+        this.tpPortSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+        @Override
+        public OFActionSetTpDst build() {
+                TransportPort tpPort = this.tpPortSet ? this.tpPort : parentMessage.tpPort;
+                if(tpPort == null)
+                    throw new NullPointerException("Property tpPort must not be null");
+
+                //
+                return new OFActionSetTpDstVer10(
+                    tpPort
+                );
+        }
+
+    }
+
+    static class Builder implements OFActionSetTpDst.Builder {
+        // OF message fields
+        private boolean tpPortSet;
+        private TransportPort tpPort;
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_TP_DST;
+    }
+
+    @Override
+    public TransportPort getTpPort() {
+        return tpPort;
+    }
+
+    @Override
+    public OFActionSetTpDst.Builder setTpPort(TransportPort tpPort) {
+        this.tpPort = tpPort;
+        this.tpPortSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+//
+        @Override
+        public OFActionSetTpDst build() {
+            TransportPort tpPort = this.tpPortSet ? this.tpPort : DEFAULT_TP_PORT;
+            if(tpPort == null)
+                throw new NullPointerException("Property tpPort must not be null");
+
+
+            return new OFActionSetTpDstVer10(
+                    tpPort
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFActionSetTpDst> {
+        @Override
+        public OFActionSetTpDst readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 10
+            short type = bb.readShort();
+            if(type != (short) 0xa)
+                throw new OFParseError("Wrong type: Expected=OFActionType.SET_TP_DST(10), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 8)
+                throw new OFParseError("Wrong length: Expected=8(8), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            TransportPort tpPort = TransportPort.read2Bytes(bb);
+            // pad: 2 bytes
+            bb.skipBytes(2);
+
+            OFActionSetTpDstVer10 actionSetTpDstVer10 = new OFActionSetTpDstVer10(
+                    tpPort
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", actionSetTpDstVer10);
+            return actionSetTpDstVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFActionSetTpDstVer10Funnel FUNNEL = new OFActionSetTpDstVer10Funnel();
+    static class OFActionSetTpDstVer10Funnel implements Funnel<OFActionSetTpDstVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFActionSetTpDstVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 10
+            sink.putShort((short) 0xa);
+            // fixed value property length = 8
+            sink.putShort((short) 0x8);
+            message.tpPort.putTo(sink);
+            // skip pad (2 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFActionSetTpDstVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFActionSetTpDstVer10 message) {
+            // fixed value property type = 10
+            bb.writeShort((short) 0xa);
+            // fixed value property length = 8
+            bb.writeShort((short) 0x8);
+            message.tpPort.write2Bytes(bb);
+            // pad: 2 bytes
+            bb.writeZero(2);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFActionSetTpDstVer10(");
+        b.append("tpPort=").append(tpPort);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFActionSetTpDstVer10 other = (OFActionSetTpDstVer10) obj;
+
+        if (tpPort == null) {
+            if (other.tpPort != null)
+                return false;
+        } else if (!tpPort.equals(other.tpPort))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime * result + ((tpPort == null) ? 0 : tpPort.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetTpSrcVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetTpSrcVer10.java
new file mode 100644
index 0000000..d69dfb8
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetTpSrcVer10.java
@@ -0,0 +1,272 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFActionSetTpSrcVer10 implements OFActionSetTpSrc {
+    private static final Logger logger = LoggerFactory.getLogger(OFActionSetTpSrcVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 8;
+
+        private final static TransportPort DEFAULT_TP_PORT = TransportPort.NONE;
+
+    // OF message fields
+    private final TransportPort tpPort;
+//
+    // Immutable default instance
+    final static OFActionSetTpSrcVer10 DEFAULT = new OFActionSetTpSrcVer10(
+        DEFAULT_TP_PORT
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFActionSetTpSrcVer10(TransportPort tpPort) {
+        this.tpPort = tpPort;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_TP_SRC;
+    }
+
+    @Override
+    public TransportPort getTpPort() {
+        return tpPort;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    public OFActionSetTpSrc.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFActionSetTpSrc.Builder {
+        final OFActionSetTpSrcVer10 parentMessage;
+
+        // OF message fields
+        private boolean tpPortSet;
+        private TransportPort tpPort;
+
+        BuilderWithParent(OFActionSetTpSrcVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_TP_SRC;
+    }
+
+    @Override
+    public TransportPort getTpPort() {
+        return tpPort;
+    }
+
+    @Override
+    public OFActionSetTpSrc.Builder setTpPort(TransportPort tpPort) {
+        this.tpPort = tpPort;
+        this.tpPortSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+        @Override
+        public OFActionSetTpSrc build() {
+                TransportPort tpPort = this.tpPortSet ? this.tpPort : parentMessage.tpPort;
+                if(tpPort == null)
+                    throw new NullPointerException("Property tpPort must not be null");
+
+                //
+                return new OFActionSetTpSrcVer10(
+                    tpPort
+                );
+        }
+
+    }
+
+    static class Builder implements OFActionSetTpSrc.Builder {
+        // OF message fields
+        private boolean tpPortSet;
+        private TransportPort tpPort;
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_TP_SRC;
+    }
+
+    @Override
+    public TransportPort getTpPort() {
+        return tpPort;
+    }
+
+    @Override
+    public OFActionSetTpSrc.Builder setTpPort(TransportPort tpPort) {
+        this.tpPort = tpPort;
+        this.tpPortSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+//
+        @Override
+        public OFActionSetTpSrc build() {
+            TransportPort tpPort = this.tpPortSet ? this.tpPort : DEFAULT_TP_PORT;
+            if(tpPort == null)
+                throw new NullPointerException("Property tpPort must not be null");
+
+
+            return new OFActionSetTpSrcVer10(
+                    tpPort
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFActionSetTpSrc> {
+        @Override
+        public OFActionSetTpSrc readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 9
+            short type = bb.readShort();
+            if(type != (short) 0x9)
+                throw new OFParseError("Wrong type: Expected=OFActionType.SET_TP_SRC(9), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 8)
+                throw new OFParseError("Wrong length: Expected=8(8), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            TransportPort tpPort = TransportPort.read2Bytes(bb);
+            // pad: 2 bytes
+            bb.skipBytes(2);
+
+            OFActionSetTpSrcVer10 actionSetTpSrcVer10 = new OFActionSetTpSrcVer10(
+                    tpPort
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", actionSetTpSrcVer10);
+            return actionSetTpSrcVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFActionSetTpSrcVer10Funnel FUNNEL = new OFActionSetTpSrcVer10Funnel();
+    static class OFActionSetTpSrcVer10Funnel implements Funnel<OFActionSetTpSrcVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFActionSetTpSrcVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 9
+            sink.putShort((short) 0x9);
+            // fixed value property length = 8
+            sink.putShort((short) 0x8);
+            message.tpPort.putTo(sink);
+            // skip pad (2 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFActionSetTpSrcVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFActionSetTpSrcVer10 message) {
+            // fixed value property type = 9
+            bb.writeShort((short) 0x9);
+            // fixed value property length = 8
+            bb.writeShort((short) 0x8);
+            message.tpPort.write2Bytes(bb);
+            // pad: 2 bytes
+            bb.writeZero(2);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFActionSetTpSrcVer10(");
+        b.append("tpPort=").append(tpPort);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFActionSetTpSrcVer10 other = (OFActionSetTpSrcVer10) obj;
+
+        if (tpPort == null) {
+            if (other.tpPort != null)
+                return false;
+        } else if (!tpPort.equals(other.tpPort))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime * result + ((tpPort == null) ? 0 : tpPort.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetVlanPcpVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetVlanPcpVer10.java
new file mode 100644
index 0000000..b4005e0
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetVlanPcpVer10.java
@@ -0,0 +1,272 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFActionSetVlanPcpVer10 implements OFActionSetVlanPcp {
+    private static final Logger logger = LoggerFactory.getLogger(OFActionSetVlanPcpVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 8;
+
+        private final static VlanPcp DEFAULT_VLAN_PCP = VlanPcp.NONE;
+
+    // OF message fields
+    private final VlanPcp vlanPcp;
+//
+    // Immutable default instance
+    final static OFActionSetVlanPcpVer10 DEFAULT = new OFActionSetVlanPcpVer10(
+        DEFAULT_VLAN_PCP
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFActionSetVlanPcpVer10(VlanPcp vlanPcp) {
+        this.vlanPcp = vlanPcp;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_VLAN_PCP;
+    }
+
+    @Override
+    public VlanPcp getVlanPcp() {
+        return vlanPcp;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    public OFActionSetVlanPcp.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFActionSetVlanPcp.Builder {
+        final OFActionSetVlanPcpVer10 parentMessage;
+
+        // OF message fields
+        private boolean vlanPcpSet;
+        private VlanPcp vlanPcp;
+
+        BuilderWithParent(OFActionSetVlanPcpVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_VLAN_PCP;
+    }
+
+    @Override
+    public VlanPcp getVlanPcp() {
+        return vlanPcp;
+    }
+
+    @Override
+    public OFActionSetVlanPcp.Builder setVlanPcp(VlanPcp vlanPcp) {
+        this.vlanPcp = vlanPcp;
+        this.vlanPcpSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+        @Override
+        public OFActionSetVlanPcp build() {
+                VlanPcp vlanPcp = this.vlanPcpSet ? this.vlanPcp : parentMessage.vlanPcp;
+                if(vlanPcp == null)
+                    throw new NullPointerException("Property vlanPcp must not be null");
+
+                //
+                return new OFActionSetVlanPcpVer10(
+                    vlanPcp
+                );
+        }
+
+    }
+
+    static class Builder implements OFActionSetVlanPcp.Builder {
+        // OF message fields
+        private boolean vlanPcpSet;
+        private VlanPcp vlanPcp;
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_VLAN_PCP;
+    }
+
+    @Override
+    public VlanPcp getVlanPcp() {
+        return vlanPcp;
+    }
+
+    @Override
+    public OFActionSetVlanPcp.Builder setVlanPcp(VlanPcp vlanPcp) {
+        this.vlanPcp = vlanPcp;
+        this.vlanPcpSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+//
+        @Override
+        public OFActionSetVlanPcp build() {
+            VlanPcp vlanPcp = this.vlanPcpSet ? this.vlanPcp : DEFAULT_VLAN_PCP;
+            if(vlanPcp == null)
+                throw new NullPointerException("Property vlanPcp must not be null");
+
+
+            return new OFActionSetVlanPcpVer10(
+                    vlanPcp
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFActionSetVlanPcp> {
+        @Override
+        public OFActionSetVlanPcp readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 2
+            short type = bb.readShort();
+            if(type != (short) 0x2)
+                throw new OFParseError("Wrong type: Expected=OFActionType.SET_VLAN_PCP(2), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 8)
+                throw new OFParseError("Wrong length: Expected=8(8), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            VlanPcp vlanPcp = VlanPcp.readByte(bb);
+            // pad: 3 bytes
+            bb.skipBytes(3);
+
+            OFActionSetVlanPcpVer10 actionSetVlanPcpVer10 = new OFActionSetVlanPcpVer10(
+                    vlanPcp
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", actionSetVlanPcpVer10);
+            return actionSetVlanPcpVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFActionSetVlanPcpVer10Funnel FUNNEL = new OFActionSetVlanPcpVer10Funnel();
+    static class OFActionSetVlanPcpVer10Funnel implements Funnel<OFActionSetVlanPcpVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFActionSetVlanPcpVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 2
+            sink.putShort((short) 0x2);
+            // fixed value property length = 8
+            sink.putShort((short) 0x8);
+            message.vlanPcp.putTo(sink);
+            // skip pad (3 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFActionSetVlanPcpVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFActionSetVlanPcpVer10 message) {
+            // fixed value property type = 2
+            bb.writeShort((short) 0x2);
+            // fixed value property length = 8
+            bb.writeShort((short) 0x8);
+            message.vlanPcp.writeByte(bb);
+            // pad: 3 bytes
+            bb.writeZero(3);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFActionSetVlanPcpVer10(");
+        b.append("vlanPcp=").append(vlanPcp);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFActionSetVlanPcpVer10 other = (OFActionSetVlanPcpVer10) obj;
+
+        if (vlanPcp == null) {
+            if (other.vlanPcp != null)
+                return false;
+        } else if (!vlanPcp.equals(other.vlanPcp))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime * result + ((vlanPcp == null) ? 0 : vlanPcp.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetVlanVidVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetVlanVidVer10.java
new file mode 100644
index 0000000..f63f283
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionSetVlanVidVer10.java
@@ -0,0 +1,272 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFActionSetVlanVidVer10 implements OFActionSetVlanVid {
+    private static final Logger logger = LoggerFactory.getLogger(OFActionSetVlanVidVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 8;
+
+        private final static VlanVid DEFAULT_VLAN_VID = VlanVid.ZERO;
+
+    // OF message fields
+    private final VlanVid vlanVid;
+//
+    // Immutable default instance
+    final static OFActionSetVlanVidVer10 DEFAULT = new OFActionSetVlanVidVer10(
+        DEFAULT_VLAN_VID
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFActionSetVlanVidVer10(VlanVid vlanVid) {
+        this.vlanVid = vlanVid;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_VLAN_VID;
+    }
+
+    @Override
+    public VlanVid getVlanVid() {
+        return vlanVid;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    public OFActionSetVlanVid.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFActionSetVlanVid.Builder {
+        final OFActionSetVlanVidVer10 parentMessage;
+
+        // OF message fields
+        private boolean vlanVidSet;
+        private VlanVid vlanVid;
+
+        BuilderWithParent(OFActionSetVlanVidVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_VLAN_VID;
+    }
+
+    @Override
+    public VlanVid getVlanVid() {
+        return vlanVid;
+    }
+
+    @Override
+    public OFActionSetVlanVid.Builder setVlanVid(VlanVid vlanVid) {
+        this.vlanVid = vlanVid;
+        this.vlanVidSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+        @Override
+        public OFActionSetVlanVid build() {
+                VlanVid vlanVid = this.vlanVidSet ? this.vlanVid : parentMessage.vlanVid;
+                if(vlanVid == null)
+                    throw new NullPointerException("Property vlanVid must not be null");
+
+                //
+                return new OFActionSetVlanVidVer10(
+                    vlanVid
+                );
+        }
+
+    }
+
+    static class Builder implements OFActionSetVlanVid.Builder {
+        // OF message fields
+        private boolean vlanVidSet;
+        private VlanVid vlanVid;
+
+    @Override
+    public OFActionType getType() {
+        return OFActionType.SET_VLAN_VID;
+    }
+
+    @Override
+    public VlanVid getVlanVid() {
+        return vlanVid;
+    }
+
+    @Override
+    public OFActionSetVlanVid.Builder setVlanVid(VlanVid vlanVid) {
+        this.vlanVid = vlanVid;
+        this.vlanVidSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+//
+        @Override
+        public OFActionSetVlanVid build() {
+            VlanVid vlanVid = this.vlanVidSet ? this.vlanVid : DEFAULT_VLAN_VID;
+            if(vlanVid == null)
+                throw new NullPointerException("Property vlanVid must not be null");
+
+
+            return new OFActionSetVlanVidVer10(
+                    vlanVid
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFActionSetVlanVid> {
+        @Override
+        public OFActionSetVlanVid readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 1
+            short type = bb.readShort();
+            if(type != (short) 0x1)
+                throw new OFParseError("Wrong type: Expected=OFActionType.SET_VLAN_VID(1), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 8)
+                throw new OFParseError("Wrong length: Expected=8(8), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            VlanVid vlanVid = VlanVid.read2Bytes(bb);
+            // pad: 2 bytes
+            bb.skipBytes(2);
+
+            OFActionSetVlanVidVer10 actionSetVlanVidVer10 = new OFActionSetVlanVidVer10(
+                    vlanVid
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", actionSetVlanVidVer10);
+            return actionSetVlanVidVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFActionSetVlanVidVer10Funnel FUNNEL = new OFActionSetVlanVidVer10Funnel();
+    static class OFActionSetVlanVidVer10Funnel implements Funnel<OFActionSetVlanVidVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFActionSetVlanVidVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 1
+            sink.putShort((short) 0x1);
+            // fixed value property length = 8
+            sink.putShort((short) 0x8);
+            message.vlanVid.putTo(sink);
+            // skip pad (2 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFActionSetVlanVidVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFActionSetVlanVidVer10 message) {
+            // fixed value property type = 1
+            bb.writeShort((short) 0x1);
+            // fixed value property length = 8
+            bb.writeShort((short) 0x8);
+            message.vlanVid.write2Bytes(bb);
+            // pad: 2 bytes
+            bb.writeZero(2);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFActionSetVlanVidVer10(");
+        b.append("vlanVid=").append(vlanVid);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFActionSetVlanVidVer10 other = (OFActionSetVlanVidVer10) obj;
+
+        if (vlanVid == null) {
+            if (other.vlanVid != null)
+                return false;
+        } else if (!vlanVid.equals(other.vlanVid))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime * result + ((vlanVid == null) ? 0 : vlanVid.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionStripVlanVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionStripVlanVer10.java
new file mode 100644
index 0000000..1314c1a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionStripVlanVer10.java
@@ -0,0 +1,161 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFActionStripVlanVer10 implements OFActionStripVlan {
+    private static final Logger logger = LoggerFactory.getLogger(OFActionStripVlanVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 8;
+
+
+    // OF message fields
+//
+    // Immutable default instance
+    final static OFActionStripVlanVer10 DEFAULT = new OFActionStripVlanVer10(
+
+    );
+
+    final static OFActionStripVlanVer10 INSTANCE = new OFActionStripVlanVer10();
+    // private empty constructor - use shared instance!
+    private OFActionStripVlanVer10() {
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFActionType getType() {
+        return OFActionType.STRIP_VLAN;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    // no data members - do not support builder
+    public OFActionStripVlan.Builder createBuilder() {
+        throw new UnsupportedOperationException("OFActionStripVlanVer10 has no mutable properties -- builder unneeded");
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFActionStripVlan> {
+        @Override
+        public OFActionStripVlan readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 3
+            short type = bb.readShort();
+            if(type != (short) 0x3)
+                throw new OFParseError("Wrong type: Expected=OFActionType.STRIP_VLAN(3), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 8)
+                throw new OFParseError("Wrong length: Expected=8(8), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            // pad: 4 bytes
+            bb.skipBytes(4);
+
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - returning shared instance={}", INSTANCE);
+            return INSTANCE;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFActionStripVlanVer10Funnel FUNNEL = new OFActionStripVlanVer10Funnel();
+    static class OFActionStripVlanVer10Funnel implements Funnel<OFActionStripVlanVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFActionStripVlanVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 3
+            sink.putShort((short) 0x3);
+            // fixed value property length = 8
+            sink.putShort((short) 0x8);
+            // skip pad (4 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFActionStripVlanVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFActionStripVlanVer10 message) {
+            // fixed value property type = 3
+            bb.writeShort((short) 0x3);
+            // fixed value property length = 8
+            bb.writeShort((short) 0x8);
+            // pad: 4 bytes
+            bb.writeZero(4);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFActionStripVlanVer10(");
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = 1;
+
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionTypeSerializerVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionTypeSerializerVer10.java
new file mode 100644
index 0000000..e094760
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionTypeSerializerVer10.java
@@ -0,0 +1,129 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const_serializer.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.projectfloodlight.openflow.protocol.OFActionType;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+
+public class OFActionTypeSerializerVer10 {
+
+    public final static short OUTPUT_VAL = (short) 0x0;
+    public final static short SET_VLAN_VID_VAL = (short) 0x1;
+    public final static short SET_VLAN_PCP_VAL = (short) 0x2;
+    public final static short STRIP_VLAN_VAL = (short) 0x3;
+    public final static short SET_DL_SRC_VAL = (short) 0x4;
+    public final static short SET_DL_DST_VAL = (short) 0x5;
+    public final static short SET_NW_SRC_VAL = (short) 0x6;
+    public final static short SET_NW_DST_VAL = (short) 0x7;
+    public final static short SET_NW_TOS_VAL = (short) 0x8;
+    public final static short SET_TP_SRC_VAL = (short) 0x9;
+    public final static short SET_TP_DST_VAL = (short) 0xa;
+    public final static short ENQUEUE_VAL = (short) 0xb;
+    public final static short EXPERIMENTER_VAL = (short) 0xffff;
+
+    public static OFActionType readFrom(ChannelBuffer bb) throws OFParseError {
+        try {
+            return ofWireValue(bb.readShort());
+        } catch (IllegalArgumentException e) {
+            throw new OFParseError(e);
+        }
+    }
+
+    public static void writeTo(ChannelBuffer bb, OFActionType e) {
+        bb.writeShort(toWireValue(e));
+    }
+
+    public static void putTo(OFActionType e, PrimitiveSink sink) {
+        sink.putShort(toWireValue(e));
+    }
+
+    public static OFActionType ofWireValue(short val) {
+        switch(val) {
+            case OUTPUT_VAL:
+                return OFActionType.OUTPUT;
+            case SET_VLAN_VID_VAL:
+                return OFActionType.SET_VLAN_VID;
+            case SET_VLAN_PCP_VAL:
+                return OFActionType.SET_VLAN_PCP;
+            case STRIP_VLAN_VAL:
+                return OFActionType.STRIP_VLAN;
+            case SET_DL_SRC_VAL:
+                return OFActionType.SET_DL_SRC;
+            case SET_DL_DST_VAL:
+                return OFActionType.SET_DL_DST;
+            case SET_NW_SRC_VAL:
+                return OFActionType.SET_NW_SRC;
+            case SET_NW_DST_VAL:
+                return OFActionType.SET_NW_DST;
+            case SET_NW_TOS_VAL:
+                return OFActionType.SET_NW_TOS;
+            case SET_TP_SRC_VAL:
+                return OFActionType.SET_TP_SRC;
+            case SET_TP_DST_VAL:
+                return OFActionType.SET_TP_DST;
+            case ENQUEUE_VAL:
+                return OFActionType.ENQUEUE;
+            case EXPERIMENTER_VAL:
+                return OFActionType.EXPERIMENTER;
+            default:
+                throw new IllegalArgumentException("Illegal wire value for type OFActionType in version 1.0: " + val);
+        }
+    }
+
+
+    public static short toWireValue(OFActionType e) {
+        switch(e) {
+            case OUTPUT:
+                return OUTPUT_VAL;
+            case SET_VLAN_VID:
+                return SET_VLAN_VID_VAL;
+            case SET_VLAN_PCP:
+                return SET_VLAN_PCP_VAL;
+            case STRIP_VLAN:
+                return STRIP_VLAN_VAL;
+            case SET_DL_SRC:
+                return SET_DL_SRC_VAL;
+            case SET_DL_DST:
+                return SET_DL_DST_VAL;
+            case SET_NW_SRC:
+                return SET_NW_SRC_VAL;
+            case SET_NW_DST:
+                return SET_NW_DST_VAL;
+            case SET_NW_TOS:
+                return SET_NW_TOS_VAL;
+            case SET_TP_SRC:
+                return SET_TP_SRC_VAL;
+            case SET_TP_DST:
+                return SET_TP_DST_VAL;
+            case ENQUEUE:
+                return ENQUEUE_VAL;
+            case EXPERIMENTER:
+                return EXPERIMENTER_VAL;
+            default:
+                throw new IllegalArgumentException("Illegal enum value for type OFActionType in version 1.0: " + e);
+        }
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionVer10.java
new file mode 100644
index 0000000..9917dcd
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionVer10.java
@@ -0,0 +1,90 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_virtual_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+import java.util.Set;
+
+abstract class OFActionVer10 {
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 8;
+
+
+    public final static OFActionVer10.Reader READER = new Reader();
+
+    static class Reader implements OFMessageReader<OFAction> {
+        @Override
+        public OFAction readFrom(ChannelBuffer bb) throws OFParseError {
+            if(bb.readableBytes() < MINIMUM_LENGTH)
+                return null;
+            int start = bb.readerIndex();
+            short type = bb.readShort();
+            bb.readerIndex(start);
+            switch(type) {
+               case (short) 0xffff:
+                   // discriminator value OFActionType.EXPERIMENTER=65535 for class OFActionExperimenterVer10
+                   return OFActionExperimenterVer10.READER.readFrom(bb);
+               case (short) 0xb:
+                   // discriminator value OFActionType.ENQUEUE=11 for class OFActionEnqueueVer10
+                   return OFActionEnqueueVer10.READER.readFrom(bb);
+               case (short) 0x0:
+                   // discriminator value OFActionType.OUTPUT=0 for class OFActionOutputVer10
+                   return OFActionOutputVer10.READER.readFrom(bb);
+               case (short) 0x5:
+                   // discriminator value OFActionType.SET_DL_DST=5 for class OFActionSetDlDstVer10
+                   return OFActionSetDlDstVer10.READER.readFrom(bb);
+               case (short) 0x4:
+                   // discriminator value OFActionType.SET_DL_SRC=4 for class OFActionSetDlSrcVer10
+                   return OFActionSetDlSrcVer10.READER.readFrom(bb);
+               case (short) 0x7:
+                   // discriminator value OFActionType.SET_NW_DST=7 for class OFActionSetNwDstVer10
+                   return OFActionSetNwDstVer10.READER.readFrom(bb);
+               case (short) 0x6:
+                   // discriminator value OFActionType.SET_NW_SRC=6 for class OFActionSetNwSrcVer10
+                   return OFActionSetNwSrcVer10.READER.readFrom(bb);
+               case (short) 0x8:
+                   // discriminator value OFActionType.SET_NW_TOS=8 for class OFActionSetNwTosVer10
+                   return OFActionSetNwTosVer10.READER.readFrom(bb);
+               case (short) 0xa:
+                   // discriminator value OFActionType.SET_TP_DST=10 for class OFActionSetTpDstVer10
+                   return OFActionSetTpDstVer10.READER.readFrom(bb);
+               case (short) 0x9:
+                   // discriminator value OFActionType.SET_TP_SRC=9 for class OFActionSetTpSrcVer10
+                   return OFActionSetTpSrcVer10.READER.readFrom(bb);
+               case (short) 0x2:
+                   // discriminator value OFActionType.SET_VLAN_PCP=2 for class OFActionSetVlanPcpVer10
+                   return OFActionSetVlanPcpVer10.READER.readFrom(bb);
+               case (short) 0x1:
+                   // discriminator value OFActionType.SET_VLAN_VID=1 for class OFActionSetVlanVidVer10
+                   return OFActionSetVlanVidVer10.READER.readFrom(bb);
+               case (short) 0x3:
+                   // discriminator value OFActionType.STRIP_VLAN=3 for class OFActionStripVlanVer10
+                   return OFActionStripVlanVer10.READER.readFrom(bb);
+               default:
+                   throw new OFParseError("Unknown value for discriminator type of class OFActionVer10: " + type);
+            }
+        }
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionsVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionsVer10.java
new file mode 100644
index 0000000..7bb203b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFActionsVer10.java
@@ -0,0 +1,282 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_factory_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+
+
+public class OFActionsVer10 implements OFActions {
+    public final static OFActionsVer10 INSTANCE = new OFActionsVer10();
+
+
+
+
+    public OFActionBsnChecksum.Builder buildBsnChecksum() {
+        return new OFActionBsnChecksumVer10.Builder();
+    }
+    public OFActionBsnChecksum bsnChecksum(U128 checksum) {
+        return new OFActionBsnChecksumVer10(
+                checksum
+                    );
+    }
+
+    public OFActionBsnMirror.Builder buildBsnMirror() {
+        return new OFActionBsnMirrorVer10.Builder();
+    }
+
+    public OFActionBsnSetTunnelDst.Builder buildBsnSetTunnelDst() {
+        return new OFActionBsnSetTunnelDstVer10.Builder();
+    }
+    public OFActionBsnSetTunnelDst bsnSetTunnelDst(long dst) {
+        return new OFActionBsnSetTunnelDstVer10(
+                dst
+                    );
+    }
+
+    public OFActionEnqueue.Builder buildEnqueue() {
+        return new OFActionEnqueueVer10.Builder();
+    }
+    public OFActionEnqueue enqueue(OFPort port, long queueId) {
+        return new OFActionEnqueueVer10(
+                port,
+                      queueId
+                    );
+    }
+
+    public OFActionNiciraDecTtl niciraDecTtl() {
+        return OFActionNiciraDecTtlVer10.INSTANCE;
+    }
+
+    public OFActionOutput.Builder buildOutput() {
+        return new OFActionOutputVer10.Builder();
+    }
+    public OFActionOutput output(OFPort port, int maxLen) {
+        return new OFActionOutputVer10(
+                port,
+                      maxLen
+                    );
+    }
+
+    public OFActionSetDlDst.Builder buildSetDlDst() {
+        return new OFActionSetDlDstVer10.Builder();
+    }
+    public OFActionSetDlDst setDlDst(MacAddress dlAddr) {
+        return new OFActionSetDlDstVer10(
+                dlAddr
+                    );
+    }
+
+    public OFActionSetDlSrc.Builder buildSetDlSrc() {
+        return new OFActionSetDlSrcVer10.Builder();
+    }
+    public OFActionSetDlSrc setDlSrc(MacAddress dlAddr) {
+        return new OFActionSetDlSrcVer10(
+                dlAddr
+                    );
+    }
+
+    public OFActionSetNwDst.Builder buildSetNwDst() {
+        return new OFActionSetNwDstVer10.Builder();
+    }
+    public OFActionSetNwDst setNwDst(IPv4Address nwAddr) {
+        return new OFActionSetNwDstVer10(
+                nwAddr
+                    );
+    }
+
+    public OFActionSetNwSrc.Builder buildSetNwSrc() {
+        return new OFActionSetNwSrcVer10.Builder();
+    }
+    public OFActionSetNwSrc setNwSrc(IPv4Address nwAddr) {
+        return new OFActionSetNwSrcVer10(
+                nwAddr
+                    );
+    }
+
+    public OFActionSetNwTos.Builder buildSetNwTos() {
+        return new OFActionSetNwTosVer10.Builder();
+    }
+    public OFActionSetNwTos setNwTos(short nwTos) {
+        return new OFActionSetNwTosVer10(
+                nwTos
+                    );
+    }
+
+    public OFActionSetTpDst.Builder buildSetTpDst() {
+        return new OFActionSetTpDstVer10.Builder();
+    }
+    public OFActionSetTpDst setTpDst(TransportPort tpPort) {
+        return new OFActionSetTpDstVer10(
+                tpPort
+                    );
+    }
+
+    public OFActionSetTpSrc.Builder buildSetTpSrc() {
+        return new OFActionSetTpSrcVer10.Builder();
+    }
+    public OFActionSetTpSrc setTpSrc(TransportPort tpPort) {
+        return new OFActionSetTpSrcVer10(
+                tpPort
+                    );
+    }
+
+    public OFActionSetVlanPcp.Builder buildSetVlanPcp() {
+        return new OFActionSetVlanPcpVer10.Builder();
+    }
+    public OFActionSetVlanPcp setVlanPcp(VlanPcp vlanPcp) {
+        return new OFActionSetVlanPcpVer10(
+                vlanPcp
+                    );
+    }
+
+    public OFActionSetVlanVid.Builder buildSetVlanVid() {
+        return new OFActionSetVlanVidVer10.Builder();
+    }
+    public OFActionSetVlanVid setVlanVid(VlanVid vlanVid) {
+        return new OFActionSetVlanVidVer10(
+                vlanVid
+                    );
+    }
+
+    public OFActionStripVlan stripVlan() {
+        return OFActionStripVlanVer10.INSTANCE;
+    }
+
+    public OFActionCopyTtlIn copyTtlIn() {
+        throw new UnsupportedOperationException("OFActionCopyTtlIn not supported in version 1.0");
+    }
+
+    public OFActionCopyTtlOut copyTtlOut() {
+        throw new UnsupportedOperationException("OFActionCopyTtlOut not supported in version 1.0");
+    }
+
+    public OFActionDecMplsTtl decMplsTtl() {
+        throw new UnsupportedOperationException("OFActionDecMplsTtl not supported in version 1.0");
+    }
+
+    public OFActionDecNwTtl decNwTtl() {
+        throw new UnsupportedOperationException("OFActionDecNwTtl not supported in version 1.0");
+    }
+
+    public OFActionGroup.Builder buildGroup() {
+        throw new UnsupportedOperationException("OFActionGroup not supported in version 1.0");
+    }
+    public OFActionGroup group(OFGroup group) {
+        throw new UnsupportedOperationException("OFActionGroup not supported in version 1.0");
+    }
+
+    public OFActionPopMpls.Builder buildPopMpls() {
+        throw new UnsupportedOperationException("OFActionPopMpls not supported in version 1.0");
+    }
+    public OFActionPopMpls popMpls(EthType ethertype) {
+        throw new UnsupportedOperationException("OFActionPopMpls not supported in version 1.0");
+    }
+
+    public OFActionPopVlan popVlan() {
+        throw new UnsupportedOperationException("OFActionPopVlan not supported in version 1.0");
+    }
+
+    public OFActionPushMpls.Builder buildPushMpls() {
+        throw new UnsupportedOperationException("OFActionPushMpls not supported in version 1.0");
+    }
+    public OFActionPushMpls pushMpls(EthType ethertype) {
+        throw new UnsupportedOperationException("OFActionPushMpls not supported in version 1.0");
+    }
+
+    public OFActionPushVlan.Builder buildPushVlan() {
+        throw new UnsupportedOperationException("OFActionPushVlan not supported in version 1.0");
+    }
+    public OFActionPushVlan pushVlan(EthType ethertype) {
+        throw new UnsupportedOperationException("OFActionPushVlan not supported in version 1.0");
+    }
+
+    public OFActionSetMplsLabel.Builder buildSetMplsLabel() {
+        throw new UnsupportedOperationException("OFActionSetMplsLabel not supported in version 1.0");
+    }
+    public OFActionSetMplsLabel setMplsLabel(long mplsLabel) {
+        throw new UnsupportedOperationException("OFActionSetMplsLabel not supported in version 1.0");
+    }
+
+    public OFActionSetMplsTc.Builder buildSetMplsTc() {
+        throw new UnsupportedOperationException("OFActionSetMplsTc not supported in version 1.0");
+    }
+    public OFActionSetMplsTc setMplsTc(short mplsTc) {
+        throw new UnsupportedOperationException("OFActionSetMplsTc not supported in version 1.0");
+    }
+
+    public OFActionSetMplsTtl.Builder buildSetMplsTtl() {
+        throw new UnsupportedOperationException("OFActionSetMplsTtl not supported in version 1.0");
+    }
+    public OFActionSetMplsTtl setMplsTtl(short mplsTtl) {
+        throw new UnsupportedOperationException("OFActionSetMplsTtl not supported in version 1.0");
+    }
+
+    public OFActionSetNwEcn.Builder buildSetNwEcn() {
+        throw new UnsupportedOperationException("OFActionSetNwEcn not supported in version 1.0");
+    }
+    public OFActionSetNwEcn setNwEcn(IpEcn nwEcn) {
+        throw new UnsupportedOperationException("OFActionSetNwEcn not supported in version 1.0");
+    }
+
+    public OFActionSetNwTtl.Builder buildSetNwTtl() {
+        throw new UnsupportedOperationException("OFActionSetNwTtl not supported in version 1.0");
+    }
+    public OFActionSetNwTtl setNwTtl(short nwTtl) {
+        throw new UnsupportedOperationException("OFActionSetNwTtl not supported in version 1.0");
+    }
+
+    public OFActionSetQueue.Builder buildSetQueue() {
+        throw new UnsupportedOperationException("OFActionSetQueue not supported in version 1.0");
+    }
+    public OFActionSetQueue setQueue(long queueId) {
+        throw new UnsupportedOperationException("OFActionSetQueue not supported in version 1.0");
+    }
+
+    public OFActionSetField.Builder buildSetField() {
+        throw new UnsupportedOperationException("OFActionSetField not supported in version 1.0");
+    }
+    public OFActionSetField setField(OFOxm<?> field) {
+        throw new UnsupportedOperationException("OFActionSetField not supported in version 1.0");
+    }
+
+    public OFActionPopPbb popPbb() {
+        throw new UnsupportedOperationException("OFActionPopPbb not supported in version 1.0");
+    }
+
+    public OFActionPushPbb.Builder buildPushPbb() {
+        throw new UnsupportedOperationException("OFActionPushPbb not supported in version 1.0");
+    }
+    public OFActionPushPbb pushPbb(EthType ethertype) {
+        throw new UnsupportedOperationException("OFActionPushPbb not supported in version 1.0");
+    }
+
+    public OFMessageReader<OFAction> getReader() {
+        return OFActionVer10.READER;
+    }
+
+
+    public OFVersion getVersion() {
+            return OFVersion.OF_10;
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFAggregateStatsReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFAggregateStatsReplyVer10.java
new file mode 100644
index 0000000..a30e829
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFAggregateStatsReplyVer10.java
@@ -0,0 +1,506 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import com.google.common.collect.ImmutableSet;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFAggregateStatsReplyVer10 implements OFAggregateStatsReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFAggregateStatsReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 36;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static Set<OFStatsReplyFlags> DEFAULT_FLAGS = ImmutableSet.<OFStatsReplyFlags>of();
+        private final static U64 DEFAULT_PACKET_COUNT = U64.ZERO;
+        private final static U64 DEFAULT_BYTE_COUNT = U64.ZERO;
+        private final static long DEFAULT_FLOW_COUNT = 0x0L;
+
+    // OF message fields
+    private final long xid;
+    private final Set<OFStatsReplyFlags> flags;
+    private final U64 packetCount;
+    private final U64 byteCount;
+    private final long flowCount;
+//
+    // Immutable default instance
+    final static OFAggregateStatsReplyVer10 DEFAULT = new OFAggregateStatsReplyVer10(
+        DEFAULT_XID, DEFAULT_FLAGS, DEFAULT_PACKET_COUNT, DEFAULT_BYTE_COUNT, DEFAULT_FLOW_COUNT
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFAggregateStatsReplyVer10(long xid, Set<OFStatsReplyFlags> flags, U64 packetCount, U64 byteCount, long flowCount) {
+        this.xid = xid;
+        this.flags = flags;
+        this.packetCount = packetCount;
+        this.byteCount = byteCount;
+        this.flowCount = flowCount;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.STATS_REPLY;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFStatsType getStatsType() {
+        return OFStatsType.AGGREGATE;
+    }
+
+    @Override
+    public Set<OFStatsReplyFlags> getFlags() {
+        return flags;
+    }
+
+    @Override
+    public U64 getPacketCount() {
+        return packetCount;
+    }
+
+    @Override
+    public U64 getByteCount() {
+        return byteCount;
+    }
+
+    @Override
+    public long getFlowCount() {
+        return flowCount;
+    }
+
+
+
+    public OFAggregateStatsReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFAggregateStatsReply.Builder {
+        final OFAggregateStatsReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean flagsSet;
+        private Set<OFStatsReplyFlags> flags;
+        private boolean packetCountSet;
+        private U64 packetCount;
+        private boolean byteCountSet;
+        private U64 byteCount;
+        private boolean flowCountSet;
+        private long flowCount;
+
+        BuilderWithParent(OFAggregateStatsReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.STATS_REPLY;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFAggregateStatsReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public OFStatsType getStatsType() {
+        return OFStatsType.AGGREGATE;
+    }
+
+    @Override
+    public Set<OFStatsReplyFlags> getFlags() {
+        return flags;
+    }
+
+    @Override
+    public OFAggregateStatsReply.Builder setFlags(Set<OFStatsReplyFlags> flags) {
+        this.flags = flags;
+        this.flagsSet = true;
+        return this;
+    }
+    @Override
+    public U64 getPacketCount() {
+        return packetCount;
+    }
+
+    @Override
+    public OFAggregateStatsReply.Builder setPacketCount(U64 packetCount) {
+        this.packetCount = packetCount;
+        this.packetCountSet = true;
+        return this;
+    }
+    @Override
+    public U64 getByteCount() {
+        return byteCount;
+    }
+
+    @Override
+    public OFAggregateStatsReply.Builder setByteCount(U64 byteCount) {
+        this.byteCount = byteCount;
+        this.byteCountSet = true;
+        return this;
+    }
+    @Override
+    public long getFlowCount() {
+        return flowCount;
+    }
+
+    @Override
+    public OFAggregateStatsReply.Builder setFlowCount(long flowCount) {
+        this.flowCount = flowCount;
+        this.flowCountSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFAggregateStatsReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                Set<OFStatsReplyFlags> flags = this.flagsSet ? this.flags : parentMessage.flags;
+                if(flags == null)
+                    throw new NullPointerException("Property flags must not be null");
+                U64 packetCount = this.packetCountSet ? this.packetCount : parentMessage.packetCount;
+                if(packetCount == null)
+                    throw new NullPointerException("Property packetCount must not be null");
+                U64 byteCount = this.byteCountSet ? this.byteCount : parentMessage.byteCount;
+                if(byteCount == null)
+                    throw new NullPointerException("Property byteCount must not be null");
+                long flowCount = this.flowCountSet ? this.flowCount : parentMessage.flowCount;
+
+                //
+                return new OFAggregateStatsReplyVer10(
+                    xid,
+                    flags,
+                    packetCount,
+                    byteCount,
+                    flowCount
+                );
+        }
+
+    }
+
+    static class Builder implements OFAggregateStatsReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean flagsSet;
+        private Set<OFStatsReplyFlags> flags;
+        private boolean packetCountSet;
+        private U64 packetCount;
+        private boolean byteCountSet;
+        private U64 byteCount;
+        private boolean flowCountSet;
+        private long flowCount;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.STATS_REPLY;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFAggregateStatsReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public OFStatsType getStatsType() {
+        return OFStatsType.AGGREGATE;
+    }
+
+    @Override
+    public Set<OFStatsReplyFlags> getFlags() {
+        return flags;
+    }
+
+    @Override
+    public OFAggregateStatsReply.Builder setFlags(Set<OFStatsReplyFlags> flags) {
+        this.flags = flags;
+        this.flagsSet = true;
+        return this;
+    }
+    @Override
+    public U64 getPacketCount() {
+        return packetCount;
+    }
+
+    @Override
+    public OFAggregateStatsReply.Builder setPacketCount(U64 packetCount) {
+        this.packetCount = packetCount;
+        this.packetCountSet = true;
+        return this;
+    }
+    @Override
+    public U64 getByteCount() {
+        return byteCount;
+    }
+
+    @Override
+    public OFAggregateStatsReply.Builder setByteCount(U64 byteCount) {
+        this.byteCount = byteCount;
+        this.byteCountSet = true;
+        return this;
+    }
+    @Override
+    public long getFlowCount() {
+        return flowCount;
+    }
+
+    @Override
+    public OFAggregateStatsReply.Builder setFlowCount(long flowCount) {
+        this.flowCount = flowCount;
+        this.flowCountSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFAggregateStatsReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            Set<OFStatsReplyFlags> flags = this.flagsSet ? this.flags : DEFAULT_FLAGS;
+            if(flags == null)
+                throw new NullPointerException("Property flags must not be null");
+            U64 packetCount = this.packetCountSet ? this.packetCount : DEFAULT_PACKET_COUNT;
+            if(packetCount == null)
+                throw new NullPointerException("Property packetCount must not be null");
+            U64 byteCount = this.byteCountSet ? this.byteCount : DEFAULT_BYTE_COUNT;
+            if(byteCount == null)
+                throw new NullPointerException("Property byteCount must not be null");
+            long flowCount = this.flowCountSet ? this.flowCount : DEFAULT_FLOW_COUNT;
+
+
+            return new OFAggregateStatsReplyVer10(
+                    xid,
+                    flags,
+                    packetCount,
+                    byteCount,
+                    flowCount
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFAggregateStatsReply> {
+        @Override
+        public OFAggregateStatsReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 17
+            byte type = bb.readByte();
+            if(type != (byte) 0x11)
+                throw new OFParseError("Wrong type: Expected=OFType.STATS_REPLY(17), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 36)
+                throw new OFParseError("Wrong length: Expected=36(36), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property statsType == 2
+            short statsType = bb.readShort();
+            if(statsType != (short) 0x2)
+                throw new OFParseError("Wrong statsType: Expected=OFStatsType.AGGREGATE(2), got="+statsType);
+            Set<OFStatsReplyFlags> flags = OFStatsReplyFlagsSerializerVer10.readFrom(bb);
+            U64 packetCount = U64.ofRaw(bb.readLong());
+            U64 byteCount = U64.ofRaw(bb.readLong());
+            long flowCount = U32.f(bb.readInt());
+            // pad: 4 bytes
+            bb.skipBytes(4);
+
+            OFAggregateStatsReplyVer10 aggregateStatsReplyVer10 = new OFAggregateStatsReplyVer10(
+                    xid,
+                      flags,
+                      packetCount,
+                      byteCount,
+                      flowCount
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", aggregateStatsReplyVer10);
+            return aggregateStatsReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFAggregateStatsReplyVer10Funnel FUNNEL = new OFAggregateStatsReplyVer10Funnel();
+    static class OFAggregateStatsReplyVer10Funnel implements Funnel<OFAggregateStatsReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFAggregateStatsReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 17
+            sink.putByte((byte) 0x11);
+            // fixed value property length = 36
+            sink.putShort((short) 0x24);
+            sink.putLong(message.xid);
+            // fixed value property statsType = 2
+            sink.putShort((short) 0x2);
+            OFStatsReplyFlagsSerializerVer10.putTo(message.flags, sink);
+            message.packetCount.putTo(sink);
+            message.byteCount.putTo(sink);
+            sink.putLong(message.flowCount);
+            // skip pad (4 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFAggregateStatsReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFAggregateStatsReplyVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 17
+            bb.writeByte((byte) 0x11);
+            // fixed value property length = 36
+            bb.writeShort((short) 0x24);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property statsType = 2
+            bb.writeShort((short) 0x2);
+            OFStatsReplyFlagsSerializerVer10.writeTo(bb, message.flags);
+            bb.writeLong(message.packetCount.getValue());
+            bb.writeLong(message.byteCount.getValue());
+            bb.writeInt(U32.t(message.flowCount));
+            // pad: 4 bytes
+            bb.writeZero(4);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFAggregateStatsReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("flags=").append(flags);
+        b.append(", ");
+        b.append("packetCount=").append(packetCount);
+        b.append(", ");
+        b.append("byteCount=").append(byteCount);
+        b.append(", ");
+        b.append("flowCount=").append(flowCount);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFAggregateStatsReplyVer10 other = (OFAggregateStatsReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if (flags == null) {
+            if (other.flags != null)
+                return false;
+        } else if (!flags.equals(other.flags))
+            return false;
+        if (packetCount == null) {
+            if (other.packetCount != null)
+                return false;
+        } else if (!packetCount.equals(other.packetCount))
+            return false;
+        if (byteCount == null) {
+            if (other.byteCount != null)
+                return false;
+        } else if (!byteCount.equals(other.byteCount))
+            return false;
+        if( flowCount != other.flowCount)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + ((flags == null) ? 0 : flags.hashCode());
+        result = prime * result + ((packetCount == null) ? 0 : packetCount.hashCode());
+        result = prime * result + ((byteCount == null) ? 0 : byteCount.hashCode());
+        result = prime *  (int) (flowCount ^ (flowCount >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFAggregateStatsRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFAggregateStatsRequestVer10.java
new file mode 100644
index 0000000..4b36011
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFAggregateStatsRequestVer10.java
@@ -0,0 +1,582 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import com.google.common.collect.ImmutableSet;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFAggregateStatsRequestVer10 implements OFAggregateStatsRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFAggregateStatsRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 56;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static Set<OFStatsRequestFlags> DEFAULT_FLAGS = ImmutableSet.<OFStatsRequestFlags>of();
+        private final static Match DEFAULT_MATCH = OFFactoryVer10.MATCH_WILDCARD_ALL;
+        private final static TableId DEFAULT_TABLE_ID = TableId.ALL;
+        private final static OFPort DEFAULT_OUT_PORT = OFPort.ANY;
+
+    // OF message fields
+    private final long xid;
+    private final Set<OFStatsRequestFlags> flags;
+    private final Match match;
+    private final TableId tableId;
+    private final OFPort outPort;
+//
+    // Immutable default instance
+    final static OFAggregateStatsRequestVer10 DEFAULT = new OFAggregateStatsRequestVer10(
+        DEFAULT_XID, DEFAULT_FLAGS, DEFAULT_MATCH, DEFAULT_TABLE_ID, DEFAULT_OUT_PORT
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFAggregateStatsRequestVer10(long xid, Set<OFStatsRequestFlags> flags, Match match, TableId tableId, OFPort outPort) {
+        this.xid = xid;
+        this.flags = flags;
+        this.match = match;
+        this.tableId = tableId;
+        this.outPort = outPort;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.STATS_REQUEST;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFStatsType getStatsType() {
+        return OFStatsType.AGGREGATE;
+    }
+
+    @Override
+    public Set<OFStatsRequestFlags> getFlags() {
+        return flags;
+    }
+
+    @Override
+    public TableId getTableId() {
+        return tableId;
+    }
+
+    @Override
+    public OFPort getOutPort() {
+        return outPort;
+    }
+
+    @Override
+    public OFGroup getOutGroup()throws UnsupportedOperationException {
+        throw new UnsupportedOperationException("Property outGroup not supported in version 1.0");
+    }
+
+    @Override
+    public U64 getCookie()throws UnsupportedOperationException {
+        throw new UnsupportedOperationException("Property cookie not supported in version 1.0");
+    }
+
+    @Override
+    public U64 getCookieMask()throws UnsupportedOperationException {
+        throw new UnsupportedOperationException("Property cookieMask not supported in version 1.0");
+    }
+
+    @Override
+    public Match getMatch() {
+        return match;
+    }
+
+
+
+    public OFAggregateStatsRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFAggregateStatsRequest.Builder {
+        final OFAggregateStatsRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean flagsSet;
+        private Set<OFStatsRequestFlags> flags;
+        private boolean matchSet;
+        private Match match;
+        private boolean tableIdSet;
+        private TableId tableId;
+        private boolean outPortSet;
+        private OFPort outPort;
+
+        BuilderWithParent(OFAggregateStatsRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.STATS_REQUEST;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFAggregateStatsRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public OFStatsType getStatsType() {
+        return OFStatsType.AGGREGATE;
+    }
+
+    @Override
+    public Set<OFStatsRequestFlags> getFlags() {
+        return flags;
+    }
+
+    @Override
+    public OFAggregateStatsRequest.Builder setFlags(Set<OFStatsRequestFlags> flags) {
+        this.flags = flags;
+        this.flagsSet = true;
+        return this;
+    }
+    @Override
+    public TableId getTableId() {
+        return tableId;
+    }
+
+    @Override
+    public OFAggregateStatsRequest.Builder setTableId(TableId tableId) {
+        this.tableId = tableId;
+        this.tableIdSet = true;
+        return this;
+    }
+    @Override
+    public OFPort getOutPort() {
+        return outPort;
+    }
+
+    @Override
+    public OFAggregateStatsRequest.Builder setOutPort(OFPort outPort) {
+        this.outPort = outPort;
+        this.outPortSet = true;
+        return this;
+    }
+    @Override
+    public OFGroup getOutGroup()throws UnsupportedOperationException {
+        throw new UnsupportedOperationException("Property outGroup not supported in version 1.0");
+    }
+
+    @Override
+    public OFAggregateStatsRequest.Builder setOutGroup(OFGroup outGroup) throws UnsupportedOperationException {
+            throw new UnsupportedOperationException("Property outGroup not supported in version 1.0");
+    }
+    @Override
+    public U64 getCookie()throws UnsupportedOperationException {
+        throw new UnsupportedOperationException("Property cookie not supported in version 1.0");
+    }
+
+    @Override
+    public OFAggregateStatsRequest.Builder setCookie(U64 cookie) throws UnsupportedOperationException {
+            throw new UnsupportedOperationException("Property cookie not supported in version 1.0");
+    }
+    @Override
+    public U64 getCookieMask()throws UnsupportedOperationException {
+        throw new UnsupportedOperationException("Property cookieMask not supported in version 1.0");
+    }
+
+    @Override
+    public OFAggregateStatsRequest.Builder setCookieMask(U64 cookieMask) throws UnsupportedOperationException {
+            throw new UnsupportedOperationException("Property cookieMask not supported in version 1.0");
+    }
+    @Override
+    public Match getMatch() {
+        return match;
+    }
+
+    @Override
+    public OFAggregateStatsRequest.Builder setMatch(Match match) {
+        this.match = match;
+        this.matchSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFAggregateStatsRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                Set<OFStatsRequestFlags> flags = this.flagsSet ? this.flags : parentMessage.flags;
+                if(flags == null)
+                    throw new NullPointerException("Property flags must not be null");
+                Match match = this.matchSet ? this.match : parentMessage.match;
+                if(match == null)
+                    throw new NullPointerException("Property match must not be null");
+                TableId tableId = this.tableIdSet ? this.tableId : parentMessage.tableId;
+                if(tableId == null)
+                    throw new NullPointerException("Property tableId must not be null");
+                OFPort outPort = this.outPortSet ? this.outPort : parentMessage.outPort;
+                if(outPort == null)
+                    throw new NullPointerException("Property outPort must not be null");
+
+                //
+                return new OFAggregateStatsRequestVer10(
+                    xid,
+                    flags,
+                    match,
+                    tableId,
+                    outPort
+                );
+        }
+
+    }
+
+    static class Builder implements OFAggregateStatsRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean flagsSet;
+        private Set<OFStatsRequestFlags> flags;
+        private boolean matchSet;
+        private Match match;
+        private boolean tableIdSet;
+        private TableId tableId;
+        private boolean outPortSet;
+        private OFPort outPort;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.STATS_REQUEST;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFAggregateStatsRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public OFStatsType getStatsType() {
+        return OFStatsType.AGGREGATE;
+    }
+
+    @Override
+    public Set<OFStatsRequestFlags> getFlags() {
+        return flags;
+    }
+
+    @Override
+    public OFAggregateStatsRequest.Builder setFlags(Set<OFStatsRequestFlags> flags) {
+        this.flags = flags;
+        this.flagsSet = true;
+        return this;
+    }
+    @Override
+    public TableId getTableId() {
+        return tableId;
+    }
+
+    @Override
+    public OFAggregateStatsRequest.Builder setTableId(TableId tableId) {
+        this.tableId = tableId;
+        this.tableIdSet = true;
+        return this;
+    }
+    @Override
+    public OFPort getOutPort() {
+        return outPort;
+    }
+
+    @Override
+    public OFAggregateStatsRequest.Builder setOutPort(OFPort outPort) {
+        this.outPort = outPort;
+        this.outPortSet = true;
+        return this;
+    }
+    @Override
+    public OFGroup getOutGroup()throws UnsupportedOperationException {
+        throw new UnsupportedOperationException("Property outGroup not supported in version 1.0");
+    }
+
+    @Override
+    public OFAggregateStatsRequest.Builder setOutGroup(OFGroup outGroup) throws UnsupportedOperationException {
+            throw new UnsupportedOperationException("Property outGroup not supported in version 1.0");
+    }
+    @Override
+    public U64 getCookie()throws UnsupportedOperationException {
+        throw new UnsupportedOperationException("Property cookie not supported in version 1.0");
+    }
+
+    @Override
+    public OFAggregateStatsRequest.Builder setCookie(U64 cookie) throws UnsupportedOperationException {
+            throw new UnsupportedOperationException("Property cookie not supported in version 1.0");
+    }
+    @Override
+    public U64 getCookieMask()throws UnsupportedOperationException {
+        throw new UnsupportedOperationException("Property cookieMask not supported in version 1.0");
+    }
+
+    @Override
+    public OFAggregateStatsRequest.Builder setCookieMask(U64 cookieMask) throws UnsupportedOperationException {
+            throw new UnsupportedOperationException("Property cookieMask not supported in version 1.0");
+    }
+    @Override
+    public Match getMatch() {
+        return match;
+    }
+
+    @Override
+    public OFAggregateStatsRequest.Builder setMatch(Match match) {
+        this.match = match;
+        this.matchSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFAggregateStatsRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            Set<OFStatsRequestFlags> flags = this.flagsSet ? this.flags : DEFAULT_FLAGS;
+            if(flags == null)
+                throw new NullPointerException("Property flags must not be null");
+            Match match = this.matchSet ? this.match : DEFAULT_MATCH;
+            if(match == null)
+                throw new NullPointerException("Property match must not be null");
+            TableId tableId = this.tableIdSet ? this.tableId : DEFAULT_TABLE_ID;
+            if(tableId == null)
+                throw new NullPointerException("Property tableId must not be null");
+            OFPort outPort = this.outPortSet ? this.outPort : DEFAULT_OUT_PORT;
+            if(outPort == null)
+                throw new NullPointerException("Property outPort must not be null");
+
+
+            return new OFAggregateStatsRequestVer10(
+                    xid,
+                    flags,
+                    match,
+                    tableId,
+                    outPort
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFAggregateStatsRequest> {
+        @Override
+        public OFAggregateStatsRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 16
+            byte type = bb.readByte();
+            if(type != (byte) 0x10)
+                throw new OFParseError("Wrong type: Expected=OFType.STATS_REQUEST(16), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 56)
+                throw new OFParseError("Wrong length: Expected=56(56), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property statsType == 2
+            short statsType = bb.readShort();
+            if(statsType != (short) 0x2)
+                throw new OFParseError("Wrong statsType: Expected=OFStatsType.AGGREGATE(2), got="+statsType);
+            Set<OFStatsRequestFlags> flags = OFStatsRequestFlagsSerializerVer10.readFrom(bb);
+            Match match = ChannelUtilsVer10.readOFMatch(bb);
+            TableId tableId = TableId.readByte(bb);
+            // pad: 1 bytes
+            bb.skipBytes(1);
+            OFPort outPort = OFPort.read2Bytes(bb);
+
+            OFAggregateStatsRequestVer10 aggregateStatsRequestVer10 = new OFAggregateStatsRequestVer10(
+                    xid,
+                      flags,
+                      match,
+                      tableId,
+                      outPort
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", aggregateStatsRequestVer10);
+            return aggregateStatsRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFAggregateStatsRequestVer10Funnel FUNNEL = new OFAggregateStatsRequestVer10Funnel();
+    static class OFAggregateStatsRequestVer10Funnel implements Funnel<OFAggregateStatsRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFAggregateStatsRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 16
+            sink.putByte((byte) 0x10);
+            // fixed value property length = 56
+            sink.putShort((short) 0x38);
+            sink.putLong(message.xid);
+            // fixed value property statsType = 2
+            sink.putShort((short) 0x2);
+            OFStatsRequestFlagsSerializerVer10.putTo(message.flags, sink);
+            message.match.putTo(sink);
+            message.tableId.putTo(sink);
+            // skip pad (1 bytes)
+            message.outPort.putTo(sink);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFAggregateStatsRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFAggregateStatsRequestVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 16
+            bb.writeByte((byte) 0x10);
+            // fixed value property length = 56
+            bb.writeShort((short) 0x38);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property statsType = 2
+            bb.writeShort((short) 0x2);
+            OFStatsRequestFlagsSerializerVer10.writeTo(bb, message.flags);
+            message.match.writeTo(bb);
+            message.tableId.writeByte(bb);
+            // pad: 1 bytes
+            bb.writeZero(1);
+            message.outPort.write2Bytes(bb);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFAggregateStatsRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("flags=").append(flags);
+        b.append(", ");
+        b.append("match=").append(match);
+        b.append(", ");
+        b.append("tableId=").append(tableId);
+        b.append(", ");
+        b.append("outPort=").append(outPort);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFAggregateStatsRequestVer10 other = (OFAggregateStatsRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if (flags == null) {
+            if (other.flags != null)
+                return false;
+        } else if (!flags.equals(other.flags))
+            return false;
+        if (match == null) {
+            if (other.match != null)
+                return false;
+        } else if (!match.equals(other.match))
+            return false;
+        if (tableId == null) {
+            if (other.tableId != null)
+                return false;
+        } else if (!tableId.equals(other.tableId))
+            return false;
+        if (outPort == null) {
+            if (other.outPort != null)
+                return false;
+        } else if (!outPort.equals(other.outPort))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + ((flags == null) ? 0 : flags.hashCode());
+        result = prime * result + ((match == null) ? 0 : match.hashCode());
+        result = prime * result + ((tableId == null) ? 0 : tableId.hashCode());
+        result = prime * result + ((outPort == null) ? 0 : outPort.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBadActionCodeSerializerVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBadActionCodeSerializerVer10.java
new file mode 100644
index 0000000..b1f67c7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBadActionCodeSerializerVer10.java
@@ -0,0 +1,109 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const_serializer.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.projectfloodlight.openflow.protocol.OFBadActionCode;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+
+public class OFBadActionCodeSerializerVer10 {
+
+    public final static short BAD_TYPE_VAL = (short) 0x0;
+    public final static short BAD_LEN_VAL = (short) 0x1;
+    public final static short BAD_EXPERIMENTER_VAL = (short) 0x2;
+    public final static short BAD_EXPERIMENTER_TYPE_VAL = (short) 0x3;
+    public final static short BAD_OUT_PORT_VAL = (short) 0x4;
+    public final static short BAD_ARGUMENT_VAL = (short) 0x5;
+    public final static short EPERM_VAL = (short) 0x6;
+    public final static short TOO_MANY_VAL = (short) 0x7;
+    public final static short BAD_QUEUE_VAL = (short) 0x8;
+
+    public static OFBadActionCode readFrom(ChannelBuffer bb) throws OFParseError {
+        try {
+            return ofWireValue(bb.readShort());
+        } catch (IllegalArgumentException e) {
+            throw new OFParseError(e);
+        }
+    }
+
+    public static void writeTo(ChannelBuffer bb, OFBadActionCode e) {
+        bb.writeShort(toWireValue(e));
+    }
+
+    public static void putTo(OFBadActionCode e, PrimitiveSink sink) {
+        sink.putShort(toWireValue(e));
+    }
+
+    public static OFBadActionCode ofWireValue(short val) {
+        switch(val) {
+            case BAD_TYPE_VAL:
+                return OFBadActionCode.BAD_TYPE;
+            case BAD_LEN_VAL:
+                return OFBadActionCode.BAD_LEN;
+            case BAD_EXPERIMENTER_VAL:
+                return OFBadActionCode.BAD_EXPERIMENTER;
+            case BAD_EXPERIMENTER_TYPE_VAL:
+                return OFBadActionCode.BAD_EXPERIMENTER_TYPE;
+            case BAD_OUT_PORT_VAL:
+                return OFBadActionCode.BAD_OUT_PORT;
+            case BAD_ARGUMENT_VAL:
+                return OFBadActionCode.BAD_ARGUMENT;
+            case EPERM_VAL:
+                return OFBadActionCode.EPERM;
+            case TOO_MANY_VAL:
+                return OFBadActionCode.TOO_MANY;
+            case BAD_QUEUE_VAL:
+                return OFBadActionCode.BAD_QUEUE;
+            default:
+                throw new IllegalArgumentException("Illegal wire value for type OFBadActionCode in version 1.0: " + val);
+        }
+    }
+
+
+    public static short toWireValue(OFBadActionCode e) {
+        switch(e) {
+            case BAD_TYPE:
+                return BAD_TYPE_VAL;
+            case BAD_LEN:
+                return BAD_LEN_VAL;
+            case BAD_EXPERIMENTER:
+                return BAD_EXPERIMENTER_VAL;
+            case BAD_EXPERIMENTER_TYPE:
+                return BAD_EXPERIMENTER_TYPE_VAL;
+            case BAD_OUT_PORT:
+                return BAD_OUT_PORT_VAL;
+            case BAD_ARGUMENT:
+                return BAD_ARGUMENT_VAL;
+            case EPERM:
+                return EPERM_VAL;
+            case TOO_MANY:
+                return TOO_MANY_VAL;
+            case BAD_QUEUE:
+                return BAD_QUEUE_VAL;
+            default:
+                throw new IllegalArgumentException("Illegal enum value for type OFBadActionCode in version 1.0: " + e);
+        }
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBadActionErrorMsgVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBadActionErrorMsgVer10.java
new file mode 100644
index 0000000..aae9003
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBadActionErrorMsgVer10.java
@@ -0,0 +1,400 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBadActionErrorMsgVer10 implements OFBadActionErrorMsg {
+    private static final Logger logger = LoggerFactory.getLogger(OFBadActionErrorMsgVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 12;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static OFErrorCauseData DEFAULT_DATA = OFErrorCauseData.NONE;
+
+    // OF message fields
+    private final long xid;
+    private final OFBadActionCode code;
+    private final OFErrorCauseData data;
+//
+
+    // package private constructor - used by readers, builders, and factory
+    OFBadActionErrorMsgVer10(long xid, OFBadActionCode code, OFErrorCauseData data) {
+        this.xid = xid;
+        this.code = code;
+        this.data = data;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.ERROR;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFErrorType getErrType() {
+        return OFErrorType.BAD_ACTION;
+    }
+
+    @Override
+    public OFBadActionCode getCode() {
+        return code;
+    }
+
+    @Override
+    public OFErrorCauseData getData() {
+        return data;
+    }
+
+
+
+    public OFBadActionErrorMsg.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBadActionErrorMsg.Builder {
+        final OFBadActionErrorMsgVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean codeSet;
+        private OFBadActionCode code;
+        private boolean dataSet;
+        private OFErrorCauseData data;
+
+        BuilderWithParent(OFBadActionErrorMsgVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.ERROR;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBadActionErrorMsg.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public OFErrorType getErrType() {
+        return OFErrorType.BAD_ACTION;
+    }
+
+    @Override
+    public OFBadActionCode getCode() {
+        return code;
+    }
+
+    @Override
+    public OFBadActionErrorMsg.Builder setCode(OFBadActionCode code) {
+        this.code = code;
+        this.codeSet = true;
+        return this;
+    }
+    @Override
+    public OFErrorCauseData getData() {
+        return data;
+    }
+
+    @Override
+    public OFBadActionErrorMsg.Builder setData(OFErrorCauseData data) {
+        this.data = data;
+        this.dataSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBadActionErrorMsg build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                OFBadActionCode code = this.codeSet ? this.code : parentMessage.code;
+                if(code == null)
+                    throw new NullPointerException("Property code must not be null");
+                OFErrorCauseData data = this.dataSet ? this.data : parentMessage.data;
+                if(data == null)
+                    throw new NullPointerException("Property data must not be null");
+
+                //
+                return new OFBadActionErrorMsgVer10(
+                    xid,
+                    code,
+                    data
+                );
+        }
+
+    }
+
+    static class Builder implements OFBadActionErrorMsg.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean codeSet;
+        private OFBadActionCode code;
+        private boolean dataSet;
+        private OFErrorCauseData data;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.ERROR;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBadActionErrorMsg.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public OFErrorType getErrType() {
+        return OFErrorType.BAD_ACTION;
+    }
+
+    @Override
+    public OFBadActionCode getCode() {
+        return code;
+    }
+
+    @Override
+    public OFBadActionErrorMsg.Builder setCode(OFBadActionCode code) {
+        this.code = code;
+        this.codeSet = true;
+        return this;
+    }
+    @Override
+    public OFErrorCauseData getData() {
+        return data;
+    }
+
+    @Override
+    public OFBadActionErrorMsg.Builder setData(OFErrorCauseData data) {
+        this.data = data;
+        this.dataSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBadActionErrorMsg build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            if(!this.codeSet)
+                throw new IllegalStateException("Property code doesn't have default value -- must be set");
+            if(code == null)
+                throw new NullPointerException("Property code must not be null");
+            OFErrorCauseData data = this.dataSet ? this.data : DEFAULT_DATA;
+            if(data == null)
+                throw new NullPointerException("Property data must not be null");
+
+
+            return new OFBadActionErrorMsgVer10(
+                    xid,
+                    code,
+                    data
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBadActionErrorMsg> {
+        @Override
+        public OFBadActionErrorMsg readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 1
+            byte type = bb.readByte();
+            if(type != (byte) 0x1)
+                throw new OFParseError("Wrong type: Expected=OFType.ERROR(1), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property errType == 2
+            short errType = bb.readShort();
+            if(errType != (short) 0x2)
+                throw new OFParseError("Wrong errType: Expected=OFErrorType.BAD_ACTION(2), got="+errType);
+            OFBadActionCode code = OFBadActionCodeSerializerVer10.readFrom(bb);
+            OFErrorCauseData data = OFErrorCauseData.read(bb, length - (bb.readerIndex() - start), OFVersion.OF_10);
+
+            OFBadActionErrorMsgVer10 badActionErrorMsgVer10 = new OFBadActionErrorMsgVer10(
+                    xid,
+                      code,
+                      data
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", badActionErrorMsgVer10);
+            return badActionErrorMsgVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBadActionErrorMsgVer10Funnel FUNNEL = new OFBadActionErrorMsgVer10Funnel();
+    static class OFBadActionErrorMsgVer10Funnel implements Funnel<OFBadActionErrorMsgVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBadActionErrorMsgVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 1
+            sink.putByte((byte) 0x1);
+            // FIXME: skip funnel of length
+            sink.putLong(message.xid);
+            // fixed value property errType = 2
+            sink.putShort((short) 0x2);
+            OFBadActionCodeSerializerVer10.putTo(message.code, sink);
+            message.data.putTo(sink);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBadActionErrorMsgVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBadActionErrorMsgVer10 message) {
+            int startIndex = bb.writerIndex();
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 1
+            bb.writeByte((byte) 0x1);
+            // length is length of variable message, will be updated at the end
+            int lengthIndex = bb.writerIndex();
+            bb.writeShort(U16.t(0));
+
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property errType = 2
+            bb.writeShort((short) 0x2);
+            OFBadActionCodeSerializerVer10.writeTo(bb, message.code);
+            message.data.writeTo(bb);
+
+            // update length field
+            int length = bb.writerIndex() - startIndex;
+            bb.setShort(lengthIndex, length);
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBadActionErrorMsgVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("code=").append(code);
+        b.append(", ");
+        b.append("data=").append(data);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBadActionErrorMsgVer10 other = (OFBadActionErrorMsgVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if (code == null) {
+            if (other.code != null)
+                return false;
+        } else if (!code.equals(other.code))
+            return false;
+        if (data == null) {
+            if (other.data != null)
+                return false;
+        } else if (!data.equals(other.data))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + ((code == null) ? 0 : code.hashCode());
+        result = prime * result + ((data == null) ? 0 : data.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBadRequestCodeSerializerVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBadRequestCodeSerializerVer10.java
new file mode 100644
index 0000000..fc11c91
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBadRequestCodeSerializerVer10.java
@@ -0,0 +1,109 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const_serializer.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.projectfloodlight.openflow.protocol.OFBadRequestCode;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+
+public class OFBadRequestCodeSerializerVer10 {
+
+    public final static short BAD_VERSION_VAL = (short) 0x0;
+    public final static short BAD_TYPE_VAL = (short) 0x1;
+    public final static short BAD_STAT_VAL = (short) 0x2;
+    public final static short BAD_EXPERIMENTER_VAL = (short) 0x3;
+    public final static short BAD_SUBTYPE_VAL = (short) 0x4;
+    public final static short EPERM_VAL = (short) 0x5;
+    public final static short BAD_LEN_VAL = (short) 0x6;
+    public final static short BUFFER_EMPTY_VAL = (short) 0x7;
+    public final static short BUFFER_UNKNOWN_VAL = (short) 0x8;
+
+    public static OFBadRequestCode readFrom(ChannelBuffer bb) throws OFParseError {
+        try {
+            return ofWireValue(bb.readShort());
+        } catch (IllegalArgumentException e) {
+            throw new OFParseError(e);
+        }
+    }
+
+    public static void writeTo(ChannelBuffer bb, OFBadRequestCode e) {
+        bb.writeShort(toWireValue(e));
+    }
+
+    public static void putTo(OFBadRequestCode e, PrimitiveSink sink) {
+        sink.putShort(toWireValue(e));
+    }
+
+    public static OFBadRequestCode ofWireValue(short val) {
+        switch(val) {
+            case BAD_VERSION_VAL:
+                return OFBadRequestCode.BAD_VERSION;
+            case BAD_TYPE_VAL:
+                return OFBadRequestCode.BAD_TYPE;
+            case BAD_STAT_VAL:
+                return OFBadRequestCode.BAD_STAT;
+            case BAD_EXPERIMENTER_VAL:
+                return OFBadRequestCode.BAD_EXPERIMENTER;
+            case BAD_SUBTYPE_VAL:
+                return OFBadRequestCode.BAD_SUBTYPE;
+            case EPERM_VAL:
+                return OFBadRequestCode.EPERM;
+            case BAD_LEN_VAL:
+                return OFBadRequestCode.BAD_LEN;
+            case BUFFER_EMPTY_VAL:
+                return OFBadRequestCode.BUFFER_EMPTY;
+            case BUFFER_UNKNOWN_VAL:
+                return OFBadRequestCode.BUFFER_UNKNOWN;
+            default:
+                throw new IllegalArgumentException("Illegal wire value for type OFBadRequestCode in version 1.0: " + val);
+        }
+    }
+
+
+    public static short toWireValue(OFBadRequestCode e) {
+        switch(e) {
+            case BAD_VERSION:
+                return BAD_VERSION_VAL;
+            case BAD_TYPE:
+                return BAD_TYPE_VAL;
+            case BAD_STAT:
+                return BAD_STAT_VAL;
+            case BAD_EXPERIMENTER:
+                return BAD_EXPERIMENTER_VAL;
+            case BAD_SUBTYPE:
+                return BAD_SUBTYPE_VAL;
+            case EPERM:
+                return EPERM_VAL;
+            case BAD_LEN:
+                return BAD_LEN_VAL;
+            case BUFFER_EMPTY:
+                return BUFFER_EMPTY_VAL;
+            case BUFFER_UNKNOWN:
+                return BUFFER_UNKNOWN_VAL;
+            default:
+                throw new IllegalArgumentException("Illegal enum value for type OFBadRequestCode in version 1.0: " + e);
+        }
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBadRequestErrorMsgVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBadRequestErrorMsgVer10.java
new file mode 100644
index 0000000..3d0c19d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBadRequestErrorMsgVer10.java
@@ -0,0 +1,400 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBadRequestErrorMsgVer10 implements OFBadRequestErrorMsg {
+    private static final Logger logger = LoggerFactory.getLogger(OFBadRequestErrorMsgVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 12;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static OFErrorCauseData DEFAULT_DATA = OFErrorCauseData.NONE;
+
+    // OF message fields
+    private final long xid;
+    private final OFBadRequestCode code;
+    private final OFErrorCauseData data;
+//
+
+    // package private constructor - used by readers, builders, and factory
+    OFBadRequestErrorMsgVer10(long xid, OFBadRequestCode code, OFErrorCauseData data) {
+        this.xid = xid;
+        this.code = code;
+        this.data = data;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.ERROR;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFErrorType getErrType() {
+        return OFErrorType.BAD_REQUEST;
+    }
+
+    @Override
+    public OFBadRequestCode getCode() {
+        return code;
+    }
+
+    @Override
+    public OFErrorCauseData getData() {
+        return data;
+    }
+
+
+
+    public OFBadRequestErrorMsg.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBadRequestErrorMsg.Builder {
+        final OFBadRequestErrorMsgVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean codeSet;
+        private OFBadRequestCode code;
+        private boolean dataSet;
+        private OFErrorCauseData data;
+
+        BuilderWithParent(OFBadRequestErrorMsgVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.ERROR;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBadRequestErrorMsg.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public OFErrorType getErrType() {
+        return OFErrorType.BAD_REQUEST;
+    }
+
+    @Override
+    public OFBadRequestCode getCode() {
+        return code;
+    }
+
+    @Override
+    public OFBadRequestErrorMsg.Builder setCode(OFBadRequestCode code) {
+        this.code = code;
+        this.codeSet = true;
+        return this;
+    }
+    @Override
+    public OFErrorCauseData getData() {
+        return data;
+    }
+
+    @Override
+    public OFBadRequestErrorMsg.Builder setData(OFErrorCauseData data) {
+        this.data = data;
+        this.dataSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBadRequestErrorMsg build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                OFBadRequestCode code = this.codeSet ? this.code : parentMessage.code;
+                if(code == null)
+                    throw new NullPointerException("Property code must not be null");
+                OFErrorCauseData data = this.dataSet ? this.data : parentMessage.data;
+                if(data == null)
+                    throw new NullPointerException("Property data must not be null");
+
+                //
+                return new OFBadRequestErrorMsgVer10(
+                    xid,
+                    code,
+                    data
+                );
+        }
+
+    }
+
+    static class Builder implements OFBadRequestErrorMsg.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean codeSet;
+        private OFBadRequestCode code;
+        private boolean dataSet;
+        private OFErrorCauseData data;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.ERROR;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBadRequestErrorMsg.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public OFErrorType getErrType() {
+        return OFErrorType.BAD_REQUEST;
+    }
+
+    @Override
+    public OFBadRequestCode getCode() {
+        return code;
+    }
+
+    @Override
+    public OFBadRequestErrorMsg.Builder setCode(OFBadRequestCode code) {
+        this.code = code;
+        this.codeSet = true;
+        return this;
+    }
+    @Override
+    public OFErrorCauseData getData() {
+        return data;
+    }
+
+    @Override
+    public OFBadRequestErrorMsg.Builder setData(OFErrorCauseData data) {
+        this.data = data;
+        this.dataSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBadRequestErrorMsg build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            if(!this.codeSet)
+                throw new IllegalStateException("Property code doesn't have default value -- must be set");
+            if(code == null)
+                throw new NullPointerException("Property code must not be null");
+            OFErrorCauseData data = this.dataSet ? this.data : DEFAULT_DATA;
+            if(data == null)
+                throw new NullPointerException("Property data must not be null");
+
+
+            return new OFBadRequestErrorMsgVer10(
+                    xid,
+                    code,
+                    data
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBadRequestErrorMsg> {
+        @Override
+        public OFBadRequestErrorMsg readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 1
+            byte type = bb.readByte();
+            if(type != (byte) 0x1)
+                throw new OFParseError("Wrong type: Expected=OFType.ERROR(1), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property errType == 1
+            short errType = bb.readShort();
+            if(errType != (short) 0x1)
+                throw new OFParseError("Wrong errType: Expected=OFErrorType.BAD_REQUEST(1), got="+errType);
+            OFBadRequestCode code = OFBadRequestCodeSerializerVer10.readFrom(bb);
+            OFErrorCauseData data = OFErrorCauseData.read(bb, length - (bb.readerIndex() - start), OFVersion.OF_10);
+
+            OFBadRequestErrorMsgVer10 badRequestErrorMsgVer10 = new OFBadRequestErrorMsgVer10(
+                    xid,
+                      code,
+                      data
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", badRequestErrorMsgVer10);
+            return badRequestErrorMsgVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBadRequestErrorMsgVer10Funnel FUNNEL = new OFBadRequestErrorMsgVer10Funnel();
+    static class OFBadRequestErrorMsgVer10Funnel implements Funnel<OFBadRequestErrorMsgVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBadRequestErrorMsgVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 1
+            sink.putByte((byte) 0x1);
+            // FIXME: skip funnel of length
+            sink.putLong(message.xid);
+            // fixed value property errType = 1
+            sink.putShort((short) 0x1);
+            OFBadRequestCodeSerializerVer10.putTo(message.code, sink);
+            message.data.putTo(sink);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBadRequestErrorMsgVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBadRequestErrorMsgVer10 message) {
+            int startIndex = bb.writerIndex();
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 1
+            bb.writeByte((byte) 0x1);
+            // length is length of variable message, will be updated at the end
+            int lengthIndex = bb.writerIndex();
+            bb.writeShort(U16.t(0));
+
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property errType = 1
+            bb.writeShort((short) 0x1);
+            OFBadRequestCodeSerializerVer10.writeTo(bb, message.code);
+            message.data.writeTo(bb);
+
+            // update length field
+            int length = bb.writerIndex() - startIndex;
+            bb.setShort(lengthIndex, length);
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBadRequestErrorMsgVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("code=").append(code);
+        b.append(", ");
+        b.append("data=").append(data);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBadRequestErrorMsgVer10 other = (OFBadRequestErrorMsgVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if (code == null) {
+            if (other.code != null)
+                return false;
+        } else if (!code.equals(other.code))
+            return false;
+        if (data == null) {
+            if (other.data != null)
+                return false;
+        } else if (!data.equals(other.data))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + ((code == null) ? 0 : code.hashCode());
+        result = prime * result + ((data == null) ? 0 : data.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBarrierReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBarrierReplyVer10.java
new file mode 100644
index 0000000..37e7356
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBarrierReplyVer10.java
@@ -0,0 +1,268 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBarrierReplyVer10 implements OFBarrierReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFBarrierReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 8;
+
+        private final static long DEFAULT_XID = 0x0L;
+
+    // OF message fields
+    private final long xid;
+//
+    // Immutable default instance
+    final static OFBarrierReplyVer10 DEFAULT = new OFBarrierReplyVer10(
+        DEFAULT_XID
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBarrierReplyVer10(long xid) {
+        this.xid = xid;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.BARRIER_REPLY;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+
+
+    public OFBarrierReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBarrierReply.Builder {
+        final OFBarrierReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+
+        BuilderWithParent(OFBarrierReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.BARRIER_REPLY;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBarrierReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBarrierReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+
+                //
+                return new OFBarrierReplyVer10(
+                    xid
+                );
+        }
+
+    }
+
+    static class Builder implements OFBarrierReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.BARRIER_REPLY;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBarrierReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBarrierReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+
+
+            return new OFBarrierReplyVer10(
+                    xid
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBarrierReply> {
+        @Override
+        public OFBarrierReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 19
+            byte type = bb.readByte();
+            if(type != (byte) 0x13)
+                throw new OFParseError("Wrong type: Expected=OFType.BARRIER_REPLY(19), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 8)
+                throw new OFParseError("Wrong length: Expected=8(8), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+
+            OFBarrierReplyVer10 barrierReplyVer10 = new OFBarrierReplyVer10(
+                    xid
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", barrierReplyVer10);
+            return barrierReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBarrierReplyVer10Funnel FUNNEL = new OFBarrierReplyVer10Funnel();
+    static class OFBarrierReplyVer10Funnel implements Funnel<OFBarrierReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBarrierReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 19
+            sink.putByte((byte) 0x13);
+            // fixed value property length = 8
+            sink.putShort((short) 0x8);
+            sink.putLong(message.xid);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBarrierReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBarrierReplyVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 19
+            bb.writeByte((byte) 0x13);
+            // fixed value property length = 8
+            bb.writeShort((short) 0x8);
+            bb.writeInt(U32.t(message.xid));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBarrierReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBarrierReplyVer10 other = (OFBarrierReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBarrierRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBarrierRequestVer10.java
new file mode 100644
index 0000000..e2def34
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBarrierRequestVer10.java
@@ -0,0 +1,268 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBarrierRequestVer10 implements OFBarrierRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFBarrierRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 8;
+
+        private final static long DEFAULT_XID = 0x0L;
+
+    // OF message fields
+    private final long xid;
+//
+    // Immutable default instance
+    final static OFBarrierRequestVer10 DEFAULT = new OFBarrierRequestVer10(
+        DEFAULT_XID
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBarrierRequestVer10(long xid) {
+        this.xid = xid;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.BARRIER_REQUEST;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+
+
+    public OFBarrierRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBarrierRequest.Builder {
+        final OFBarrierRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+
+        BuilderWithParent(OFBarrierRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.BARRIER_REQUEST;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBarrierRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBarrierRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+
+                //
+                return new OFBarrierRequestVer10(
+                    xid
+                );
+        }
+
+    }
+
+    static class Builder implements OFBarrierRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.BARRIER_REQUEST;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBarrierRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBarrierRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+
+
+            return new OFBarrierRequestVer10(
+                    xid
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBarrierRequest> {
+        @Override
+        public OFBarrierRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 18
+            byte type = bb.readByte();
+            if(type != (byte) 0x12)
+                throw new OFParseError("Wrong type: Expected=OFType.BARRIER_REQUEST(18), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 8)
+                throw new OFParseError("Wrong length: Expected=8(8), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+
+            OFBarrierRequestVer10 barrierRequestVer10 = new OFBarrierRequestVer10(
+                    xid
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", barrierRequestVer10);
+            return barrierRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBarrierRequestVer10Funnel FUNNEL = new OFBarrierRequestVer10Funnel();
+    static class OFBarrierRequestVer10Funnel implements Funnel<OFBarrierRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBarrierRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 18
+            sink.putByte((byte) 0x12);
+            // fixed value property length = 8
+            sink.putShort((short) 0x8);
+            sink.putLong(message.xid);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBarrierRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBarrierRequestVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 18
+            bb.writeByte((byte) 0x12);
+            // fixed value property length = 8
+            bb.writeShort((short) 0x8);
+            bb.writeInt(U32.t(message.xid));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBarrierRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBarrierRequestVer10 other = (OFBarrierRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwClearDataReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwClearDataReplyVer10.java
new file mode 100644
index 0000000..a1c1020
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwClearDataReplyVer10.java
@@ -0,0 +1,361 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnBwClearDataReplyVer10 implements OFBsnBwClearDataReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnBwClearDataReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 20;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static long DEFAULT_STATUS = 0x0L;
+
+    // OF message fields
+    private final long xid;
+    private final long status;
+//
+    // Immutable default instance
+    final static OFBsnBwClearDataReplyVer10 DEFAULT = new OFBsnBwClearDataReplyVer10(
+        DEFAULT_XID, DEFAULT_STATUS
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnBwClearDataReplyVer10(long xid, long status) {
+        this.xid = xid;
+        this.status = status;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x16L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+
+
+    public OFBsnBwClearDataReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnBwClearDataReply.Builder {
+        final OFBsnBwClearDataReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean statusSet;
+        private long status;
+
+        BuilderWithParent(OFBsnBwClearDataReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnBwClearDataReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x16L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnBwClearDataReply.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnBwClearDataReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                long status = this.statusSet ? this.status : parentMessage.status;
+
+                //
+                return new OFBsnBwClearDataReplyVer10(
+                    xid,
+                    status
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnBwClearDataReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean statusSet;
+        private long status;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnBwClearDataReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x16L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnBwClearDataReply.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnBwClearDataReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            long status = this.statusSet ? this.status : DEFAULT_STATUS;
+
+
+            return new OFBsnBwClearDataReplyVer10(
+                    xid,
+                    status
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnBwClearDataReply> {
+        @Override
+        public OFBsnBwClearDataReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 20)
+                throw new OFParseError("Wrong length: Expected=20(20), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x16L
+            int subtype = bb.readInt();
+            if(subtype != 0x16)
+                throw new OFParseError("Wrong subtype: Expected=0x16L(0x16L), got="+subtype);
+            long status = U32.f(bb.readInt());
+
+            OFBsnBwClearDataReplyVer10 bsnBwClearDataReplyVer10 = new OFBsnBwClearDataReplyVer10(
+                    xid,
+                      status
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnBwClearDataReplyVer10);
+            return bsnBwClearDataReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnBwClearDataReplyVer10Funnel FUNNEL = new OFBsnBwClearDataReplyVer10Funnel();
+    static class OFBsnBwClearDataReplyVer10Funnel implements Funnel<OFBsnBwClearDataReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnBwClearDataReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 20
+            sink.putShort((short) 0x14);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x16L
+            sink.putInt(0x16);
+            sink.putLong(message.status);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnBwClearDataReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnBwClearDataReplyVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 20
+            bb.writeShort((short) 0x14);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x16L
+            bb.writeInt(0x16);
+            bb.writeInt(U32.t(message.status));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnBwClearDataReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("status=").append(status);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnBwClearDataReplyVer10 other = (OFBsnBwClearDataReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( status != other.status)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime *  (int) (status ^ (status >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwClearDataRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwClearDataRequestVer10.java
new file mode 100644
index 0000000..763b7d6
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwClearDataRequestVer10.java
@@ -0,0 +1,314 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnBwClearDataRequestVer10 implements OFBsnBwClearDataRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnBwClearDataRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 16;
+
+        private final static long DEFAULT_XID = 0x0L;
+
+    // OF message fields
+    private final long xid;
+//
+    // Immutable default instance
+    final static OFBsnBwClearDataRequestVer10 DEFAULT = new OFBsnBwClearDataRequestVer10(
+        DEFAULT_XID
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnBwClearDataRequestVer10(long xid) {
+        this.xid = xid;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x15L;
+    }
+
+
+
+    public OFBsnBwClearDataRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnBwClearDataRequest.Builder {
+        final OFBsnBwClearDataRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+
+        BuilderWithParent(OFBsnBwClearDataRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnBwClearDataRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x15L;
+    }
+
+
+
+        @Override
+        public OFBsnBwClearDataRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+
+                //
+                return new OFBsnBwClearDataRequestVer10(
+                    xid
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnBwClearDataRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnBwClearDataRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x15L;
+    }
+
+//
+        @Override
+        public OFBsnBwClearDataRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+
+
+            return new OFBsnBwClearDataRequestVer10(
+                    xid
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnBwClearDataRequest> {
+        @Override
+        public OFBsnBwClearDataRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 16)
+                throw new OFParseError("Wrong length: Expected=16(16), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x15L
+            int subtype = bb.readInt();
+            if(subtype != 0x15)
+                throw new OFParseError("Wrong subtype: Expected=0x15L(0x15L), got="+subtype);
+
+            OFBsnBwClearDataRequestVer10 bsnBwClearDataRequestVer10 = new OFBsnBwClearDataRequestVer10(
+                    xid
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnBwClearDataRequestVer10);
+            return bsnBwClearDataRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnBwClearDataRequestVer10Funnel FUNNEL = new OFBsnBwClearDataRequestVer10Funnel();
+    static class OFBsnBwClearDataRequestVer10Funnel implements Funnel<OFBsnBwClearDataRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnBwClearDataRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 16
+            sink.putShort((short) 0x10);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x15L
+            sink.putInt(0x15);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnBwClearDataRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnBwClearDataRequestVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 16
+            bb.writeShort((short) 0x10);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x15L
+            bb.writeInt(0x15);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnBwClearDataRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnBwClearDataRequestVer10 other = (OFBsnBwClearDataRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwEnableGetReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwEnableGetReplyVer10.java
new file mode 100644
index 0000000..fd16755
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwEnableGetReplyVer10.java
@@ -0,0 +1,361 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnBwEnableGetReplyVer10 implements OFBsnBwEnableGetReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnBwEnableGetReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 20;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static long DEFAULT_ENABLED = 0x0L;
+
+    // OF message fields
+    private final long xid;
+    private final long enabled;
+//
+    // Immutable default instance
+    final static OFBsnBwEnableGetReplyVer10 DEFAULT = new OFBsnBwEnableGetReplyVer10(
+        DEFAULT_XID, DEFAULT_ENABLED
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnBwEnableGetReplyVer10(long xid, long enabled) {
+        this.xid = xid;
+        this.enabled = enabled;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x14L;
+    }
+
+    @Override
+    public long getEnabled() {
+        return enabled;
+    }
+
+
+
+    public OFBsnBwEnableGetReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnBwEnableGetReply.Builder {
+        final OFBsnBwEnableGetReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean enabledSet;
+        private long enabled;
+
+        BuilderWithParent(OFBsnBwEnableGetReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnBwEnableGetReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x14L;
+    }
+
+    @Override
+    public long getEnabled() {
+        return enabled;
+    }
+
+    @Override
+    public OFBsnBwEnableGetReply.Builder setEnabled(long enabled) {
+        this.enabled = enabled;
+        this.enabledSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnBwEnableGetReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                long enabled = this.enabledSet ? this.enabled : parentMessage.enabled;
+
+                //
+                return new OFBsnBwEnableGetReplyVer10(
+                    xid,
+                    enabled
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnBwEnableGetReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean enabledSet;
+        private long enabled;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnBwEnableGetReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x14L;
+    }
+
+    @Override
+    public long getEnabled() {
+        return enabled;
+    }
+
+    @Override
+    public OFBsnBwEnableGetReply.Builder setEnabled(long enabled) {
+        this.enabled = enabled;
+        this.enabledSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnBwEnableGetReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            long enabled = this.enabledSet ? this.enabled : DEFAULT_ENABLED;
+
+
+            return new OFBsnBwEnableGetReplyVer10(
+                    xid,
+                    enabled
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnBwEnableGetReply> {
+        @Override
+        public OFBsnBwEnableGetReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 20)
+                throw new OFParseError("Wrong length: Expected=20(20), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x14L
+            int subtype = bb.readInt();
+            if(subtype != 0x14)
+                throw new OFParseError("Wrong subtype: Expected=0x14L(0x14L), got="+subtype);
+            long enabled = U32.f(bb.readInt());
+
+            OFBsnBwEnableGetReplyVer10 bsnBwEnableGetReplyVer10 = new OFBsnBwEnableGetReplyVer10(
+                    xid,
+                      enabled
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnBwEnableGetReplyVer10);
+            return bsnBwEnableGetReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnBwEnableGetReplyVer10Funnel FUNNEL = new OFBsnBwEnableGetReplyVer10Funnel();
+    static class OFBsnBwEnableGetReplyVer10Funnel implements Funnel<OFBsnBwEnableGetReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnBwEnableGetReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 20
+            sink.putShort((short) 0x14);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x14L
+            sink.putInt(0x14);
+            sink.putLong(message.enabled);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnBwEnableGetReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnBwEnableGetReplyVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 20
+            bb.writeShort((short) 0x14);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x14L
+            bb.writeInt(0x14);
+            bb.writeInt(U32.t(message.enabled));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnBwEnableGetReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("enabled=").append(enabled);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnBwEnableGetReplyVer10 other = (OFBsnBwEnableGetReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( enabled != other.enabled)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime *  (int) (enabled ^ (enabled >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwEnableGetRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwEnableGetRequestVer10.java
new file mode 100644
index 0000000..f8ad0a0
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwEnableGetRequestVer10.java
@@ -0,0 +1,314 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnBwEnableGetRequestVer10 implements OFBsnBwEnableGetRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnBwEnableGetRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 16;
+
+        private final static long DEFAULT_XID = 0x0L;
+
+    // OF message fields
+    private final long xid;
+//
+    // Immutable default instance
+    final static OFBsnBwEnableGetRequestVer10 DEFAULT = new OFBsnBwEnableGetRequestVer10(
+        DEFAULT_XID
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnBwEnableGetRequestVer10(long xid) {
+        this.xid = xid;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x13L;
+    }
+
+
+
+    public OFBsnBwEnableGetRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnBwEnableGetRequest.Builder {
+        final OFBsnBwEnableGetRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+
+        BuilderWithParent(OFBsnBwEnableGetRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnBwEnableGetRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x13L;
+    }
+
+
+
+        @Override
+        public OFBsnBwEnableGetRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+
+                //
+                return new OFBsnBwEnableGetRequestVer10(
+                    xid
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnBwEnableGetRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnBwEnableGetRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x13L;
+    }
+
+//
+        @Override
+        public OFBsnBwEnableGetRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+
+
+            return new OFBsnBwEnableGetRequestVer10(
+                    xid
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnBwEnableGetRequest> {
+        @Override
+        public OFBsnBwEnableGetRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 16)
+                throw new OFParseError("Wrong length: Expected=16(16), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x13L
+            int subtype = bb.readInt();
+            if(subtype != 0x13)
+                throw new OFParseError("Wrong subtype: Expected=0x13L(0x13L), got="+subtype);
+
+            OFBsnBwEnableGetRequestVer10 bsnBwEnableGetRequestVer10 = new OFBsnBwEnableGetRequestVer10(
+                    xid
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnBwEnableGetRequestVer10);
+            return bsnBwEnableGetRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnBwEnableGetRequestVer10Funnel FUNNEL = new OFBsnBwEnableGetRequestVer10Funnel();
+    static class OFBsnBwEnableGetRequestVer10Funnel implements Funnel<OFBsnBwEnableGetRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnBwEnableGetRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 16
+            sink.putShort((short) 0x10);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x13L
+            sink.putInt(0x13);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnBwEnableGetRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnBwEnableGetRequestVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 16
+            bb.writeShort((short) 0x10);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x13L
+            bb.writeInt(0x13);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnBwEnableGetRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnBwEnableGetRequestVer10 other = (OFBsnBwEnableGetRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwEnableSetReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwEnableSetReplyVer10.java
new file mode 100644
index 0000000..4370e74
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwEnableSetReplyVer10.java
@@ -0,0 +1,408 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnBwEnableSetReplyVer10 implements OFBsnBwEnableSetReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnBwEnableSetReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 24;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static long DEFAULT_ENABLE = 0x0L;
+        private final static long DEFAULT_STATUS = 0x0L;
+
+    // OF message fields
+    private final long xid;
+    private final long enable;
+    private final long status;
+//
+    // Immutable default instance
+    final static OFBsnBwEnableSetReplyVer10 DEFAULT = new OFBsnBwEnableSetReplyVer10(
+        DEFAULT_XID, DEFAULT_ENABLE, DEFAULT_STATUS
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnBwEnableSetReplyVer10(long xid, long enable, long status) {
+        this.xid = xid;
+        this.enable = enable;
+        this.status = status;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x17L;
+    }
+
+    @Override
+    public long getEnable() {
+        return enable;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+
+
+    public OFBsnBwEnableSetReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnBwEnableSetReply.Builder {
+        final OFBsnBwEnableSetReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean enableSet;
+        private long enable;
+        private boolean statusSet;
+        private long status;
+
+        BuilderWithParent(OFBsnBwEnableSetReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnBwEnableSetReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x17L;
+    }
+
+    @Override
+    public long getEnable() {
+        return enable;
+    }
+
+    @Override
+    public OFBsnBwEnableSetReply.Builder setEnable(long enable) {
+        this.enable = enable;
+        this.enableSet = true;
+        return this;
+    }
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnBwEnableSetReply.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnBwEnableSetReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                long enable = this.enableSet ? this.enable : parentMessage.enable;
+                long status = this.statusSet ? this.status : parentMessage.status;
+
+                //
+                return new OFBsnBwEnableSetReplyVer10(
+                    xid,
+                    enable,
+                    status
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnBwEnableSetReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean enableSet;
+        private long enable;
+        private boolean statusSet;
+        private long status;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnBwEnableSetReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x17L;
+    }
+
+    @Override
+    public long getEnable() {
+        return enable;
+    }
+
+    @Override
+    public OFBsnBwEnableSetReply.Builder setEnable(long enable) {
+        this.enable = enable;
+        this.enableSet = true;
+        return this;
+    }
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnBwEnableSetReply.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnBwEnableSetReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            long enable = this.enableSet ? this.enable : DEFAULT_ENABLE;
+            long status = this.statusSet ? this.status : DEFAULT_STATUS;
+
+
+            return new OFBsnBwEnableSetReplyVer10(
+                    xid,
+                    enable,
+                    status
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnBwEnableSetReply> {
+        @Override
+        public OFBsnBwEnableSetReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 24)
+                throw new OFParseError("Wrong length: Expected=24(24), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x17L
+            int subtype = bb.readInt();
+            if(subtype != 0x17)
+                throw new OFParseError("Wrong subtype: Expected=0x17L(0x17L), got="+subtype);
+            long enable = U32.f(bb.readInt());
+            long status = U32.f(bb.readInt());
+
+            OFBsnBwEnableSetReplyVer10 bsnBwEnableSetReplyVer10 = new OFBsnBwEnableSetReplyVer10(
+                    xid,
+                      enable,
+                      status
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnBwEnableSetReplyVer10);
+            return bsnBwEnableSetReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnBwEnableSetReplyVer10Funnel FUNNEL = new OFBsnBwEnableSetReplyVer10Funnel();
+    static class OFBsnBwEnableSetReplyVer10Funnel implements Funnel<OFBsnBwEnableSetReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnBwEnableSetReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 24
+            sink.putShort((short) 0x18);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x17L
+            sink.putInt(0x17);
+            sink.putLong(message.enable);
+            sink.putLong(message.status);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnBwEnableSetReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnBwEnableSetReplyVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 24
+            bb.writeShort((short) 0x18);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x17L
+            bb.writeInt(0x17);
+            bb.writeInt(U32.t(message.enable));
+            bb.writeInt(U32.t(message.status));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnBwEnableSetReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("enable=").append(enable);
+        b.append(", ");
+        b.append("status=").append(status);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnBwEnableSetReplyVer10 other = (OFBsnBwEnableSetReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( enable != other.enable)
+            return false;
+        if( status != other.status)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime *  (int) (enable ^ (enable >>> 32));
+        result = prime *  (int) (status ^ (status >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwEnableSetRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwEnableSetRequestVer10.java
new file mode 100644
index 0000000..5e765a0
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnBwEnableSetRequestVer10.java
@@ -0,0 +1,361 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnBwEnableSetRequestVer10 implements OFBsnBwEnableSetRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnBwEnableSetRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 20;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static long DEFAULT_ENABLE = 0x0L;
+
+    // OF message fields
+    private final long xid;
+    private final long enable;
+//
+    // Immutable default instance
+    final static OFBsnBwEnableSetRequestVer10 DEFAULT = new OFBsnBwEnableSetRequestVer10(
+        DEFAULT_XID, DEFAULT_ENABLE
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnBwEnableSetRequestVer10(long xid, long enable) {
+        this.xid = xid;
+        this.enable = enable;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x12L;
+    }
+
+    @Override
+    public long getEnable() {
+        return enable;
+    }
+
+
+
+    public OFBsnBwEnableSetRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnBwEnableSetRequest.Builder {
+        final OFBsnBwEnableSetRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean enableSet;
+        private long enable;
+
+        BuilderWithParent(OFBsnBwEnableSetRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnBwEnableSetRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x12L;
+    }
+
+    @Override
+    public long getEnable() {
+        return enable;
+    }
+
+    @Override
+    public OFBsnBwEnableSetRequest.Builder setEnable(long enable) {
+        this.enable = enable;
+        this.enableSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnBwEnableSetRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                long enable = this.enableSet ? this.enable : parentMessage.enable;
+
+                //
+                return new OFBsnBwEnableSetRequestVer10(
+                    xid,
+                    enable
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnBwEnableSetRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean enableSet;
+        private long enable;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnBwEnableSetRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x12L;
+    }
+
+    @Override
+    public long getEnable() {
+        return enable;
+    }
+
+    @Override
+    public OFBsnBwEnableSetRequest.Builder setEnable(long enable) {
+        this.enable = enable;
+        this.enableSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnBwEnableSetRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            long enable = this.enableSet ? this.enable : DEFAULT_ENABLE;
+
+
+            return new OFBsnBwEnableSetRequestVer10(
+                    xid,
+                    enable
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnBwEnableSetRequest> {
+        @Override
+        public OFBsnBwEnableSetRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 20)
+                throw new OFParseError("Wrong length: Expected=20(20), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x12L
+            int subtype = bb.readInt();
+            if(subtype != 0x12)
+                throw new OFParseError("Wrong subtype: Expected=0x12L(0x12L), got="+subtype);
+            long enable = U32.f(bb.readInt());
+
+            OFBsnBwEnableSetRequestVer10 bsnBwEnableSetRequestVer10 = new OFBsnBwEnableSetRequestVer10(
+                    xid,
+                      enable
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnBwEnableSetRequestVer10);
+            return bsnBwEnableSetRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnBwEnableSetRequestVer10Funnel FUNNEL = new OFBsnBwEnableSetRequestVer10Funnel();
+    static class OFBsnBwEnableSetRequestVer10Funnel implements Funnel<OFBsnBwEnableSetRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnBwEnableSetRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 20
+            sink.putShort((short) 0x14);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x12L
+            sink.putInt(0x12);
+            sink.putLong(message.enable);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnBwEnableSetRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnBwEnableSetRequestVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 20
+            bb.writeShort((short) 0x14);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x12L
+            bb.writeInt(0x12);
+            bb.writeInt(U32.t(message.enable));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnBwEnableSetRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("enable=").append(enable);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnBwEnableSetRequestVer10 other = (OFBsnBwEnableSetRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( enable != other.enable)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime *  (int) (enable ^ (enable >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetInterfacesReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetInterfacesReplyVer10.java
new file mode 100644
index 0000000..e63c1f7
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetInterfacesReplyVer10.java
@@ -0,0 +1,375 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.List;
+import com.google.common.collect.ImmutableList;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnGetInterfacesReplyVer10 implements OFBsnGetInterfacesReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnGetInterfacesReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 16;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static List<OFBsnInterface> DEFAULT_INTERFACES = ImmutableList.<OFBsnInterface>of();
+
+    // OF message fields
+    private final long xid;
+    private final List<OFBsnInterface> interfaces;
+//
+    // Immutable default instance
+    final static OFBsnGetInterfacesReplyVer10 DEFAULT = new OFBsnGetInterfacesReplyVer10(
+        DEFAULT_XID, DEFAULT_INTERFACES
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnGetInterfacesReplyVer10(long xid, List<OFBsnInterface> interfaces) {
+        this.xid = xid;
+        this.interfaces = interfaces;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xaL;
+    }
+
+    @Override
+    public List<OFBsnInterface> getInterfaces() {
+        return interfaces;
+    }
+
+
+
+    public OFBsnGetInterfacesReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnGetInterfacesReply.Builder {
+        final OFBsnGetInterfacesReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean interfacesSet;
+        private List<OFBsnInterface> interfaces;
+
+        BuilderWithParent(OFBsnGetInterfacesReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnGetInterfacesReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xaL;
+    }
+
+    @Override
+    public List<OFBsnInterface> getInterfaces() {
+        return interfaces;
+    }
+
+    @Override
+    public OFBsnGetInterfacesReply.Builder setInterfaces(List<OFBsnInterface> interfaces) {
+        this.interfaces = interfaces;
+        this.interfacesSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnGetInterfacesReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                List<OFBsnInterface> interfaces = this.interfacesSet ? this.interfaces : parentMessage.interfaces;
+                if(interfaces == null)
+                    throw new NullPointerException("Property interfaces must not be null");
+
+                //
+                return new OFBsnGetInterfacesReplyVer10(
+                    xid,
+                    interfaces
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnGetInterfacesReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean interfacesSet;
+        private List<OFBsnInterface> interfaces;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnGetInterfacesReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xaL;
+    }
+
+    @Override
+    public List<OFBsnInterface> getInterfaces() {
+        return interfaces;
+    }
+
+    @Override
+    public OFBsnGetInterfacesReply.Builder setInterfaces(List<OFBsnInterface> interfaces) {
+        this.interfaces = interfaces;
+        this.interfacesSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnGetInterfacesReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            List<OFBsnInterface> interfaces = this.interfacesSet ? this.interfaces : DEFAULT_INTERFACES;
+            if(interfaces == null)
+                throw new NullPointerException("Property interfaces must not be null");
+
+
+            return new OFBsnGetInterfacesReplyVer10(
+                    xid,
+                    interfaces
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnGetInterfacesReply> {
+        @Override
+        public OFBsnGetInterfacesReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0xaL
+            int subtype = bb.readInt();
+            if(subtype != 0xa)
+                throw new OFParseError("Wrong subtype: Expected=0xaL(0xaL), got="+subtype);
+            List<OFBsnInterface> interfaces = ChannelUtils.readList(bb, length - (bb.readerIndex() - start), OFBsnInterfaceVer10.READER);
+
+            OFBsnGetInterfacesReplyVer10 bsnGetInterfacesReplyVer10 = new OFBsnGetInterfacesReplyVer10(
+                    xid,
+                      interfaces
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnGetInterfacesReplyVer10);
+            return bsnGetInterfacesReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnGetInterfacesReplyVer10Funnel FUNNEL = new OFBsnGetInterfacesReplyVer10Funnel();
+    static class OFBsnGetInterfacesReplyVer10Funnel implements Funnel<OFBsnGetInterfacesReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnGetInterfacesReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // FIXME: skip funnel of length
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0xaL
+            sink.putInt(0xa);
+            FunnelUtils.putList(message.interfaces, sink);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnGetInterfacesReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnGetInterfacesReplyVer10 message) {
+            int startIndex = bb.writerIndex();
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // length is length of variable message, will be updated at the end
+            int lengthIndex = bb.writerIndex();
+            bb.writeShort(U16.t(0));
+
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0xaL
+            bb.writeInt(0xa);
+            ChannelUtils.writeList(bb, message.interfaces);
+
+            // update length field
+            int length = bb.writerIndex() - startIndex;
+            bb.setShort(lengthIndex, length);
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnGetInterfacesReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("interfaces=").append(interfaces);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnGetInterfacesReplyVer10 other = (OFBsnGetInterfacesReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if (interfaces == null) {
+            if (other.interfaces != null)
+                return false;
+        } else if (!interfaces.equals(other.interfaces))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + ((interfaces == null) ? 0 : interfaces.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetInterfacesRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetInterfacesRequestVer10.java
new file mode 100644
index 0000000..f5ddab5
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetInterfacesRequestVer10.java
@@ -0,0 +1,314 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnGetInterfacesRequestVer10 implements OFBsnGetInterfacesRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnGetInterfacesRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 16;
+
+        private final static long DEFAULT_XID = 0x0L;
+
+    // OF message fields
+    private final long xid;
+//
+    // Immutable default instance
+    final static OFBsnGetInterfacesRequestVer10 DEFAULT = new OFBsnGetInterfacesRequestVer10(
+        DEFAULT_XID
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnGetInterfacesRequestVer10(long xid) {
+        this.xid = xid;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x9L;
+    }
+
+
+
+    public OFBsnGetInterfacesRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnGetInterfacesRequest.Builder {
+        final OFBsnGetInterfacesRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+
+        BuilderWithParent(OFBsnGetInterfacesRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnGetInterfacesRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x9L;
+    }
+
+
+
+        @Override
+        public OFBsnGetInterfacesRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+
+                //
+                return new OFBsnGetInterfacesRequestVer10(
+                    xid
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnGetInterfacesRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnGetInterfacesRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x9L;
+    }
+
+//
+        @Override
+        public OFBsnGetInterfacesRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+
+
+            return new OFBsnGetInterfacesRequestVer10(
+                    xid
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnGetInterfacesRequest> {
+        @Override
+        public OFBsnGetInterfacesRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 16)
+                throw new OFParseError("Wrong length: Expected=16(16), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x9L
+            int subtype = bb.readInt();
+            if(subtype != 0x9)
+                throw new OFParseError("Wrong subtype: Expected=0x9L(0x9L), got="+subtype);
+
+            OFBsnGetInterfacesRequestVer10 bsnGetInterfacesRequestVer10 = new OFBsnGetInterfacesRequestVer10(
+                    xid
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnGetInterfacesRequestVer10);
+            return bsnGetInterfacesRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnGetInterfacesRequestVer10Funnel FUNNEL = new OFBsnGetInterfacesRequestVer10Funnel();
+    static class OFBsnGetInterfacesRequestVer10Funnel implements Funnel<OFBsnGetInterfacesRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnGetInterfacesRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 16
+            sink.putShort((short) 0x10);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x9L
+            sink.putInt(0x9);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnGetInterfacesRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnGetInterfacesRequestVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 16
+            bb.writeShort((short) 0x10);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x9L
+            bb.writeInt(0x9);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnGetInterfacesRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnGetInterfacesRequestVer10 other = (OFBsnGetInterfacesRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetIpMaskReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetIpMaskReplyVer10.java
new file mode 100644
index 0000000..45fdba5
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetIpMaskReplyVer10.java
@@ -0,0 +1,413 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnGetIpMaskReplyVer10 implements OFBsnGetIpMaskReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnGetIpMaskReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 24;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static short DEFAULT_INDEX = (short) 0x0;
+        private final static long DEFAULT_MASK = 0x0L;
+
+    // OF message fields
+    private final long xid;
+    private final short index;
+    private final long mask;
+//
+    // Immutable default instance
+    final static OFBsnGetIpMaskReplyVer10 DEFAULT = new OFBsnGetIpMaskReplyVer10(
+        DEFAULT_XID, DEFAULT_INDEX, DEFAULT_MASK
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnGetIpMaskReplyVer10(long xid, short index, long mask) {
+        this.xid = xid;
+        this.index = index;
+        this.mask = mask;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x2L;
+    }
+
+    @Override
+    public short getIndex() {
+        return index;
+    }
+
+    @Override
+    public long getMask() {
+        return mask;
+    }
+
+
+
+    public OFBsnGetIpMaskReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnGetIpMaskReply.Builder {
+        final OFBsnGetIpMaskReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean indexSet;
+        private short index;
+        private boolean maskSet;
+        private long mask;
+
+        BuilderWithParent(OFBsnGetIpMaskReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnGetIpMaskReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x2L;
+    }
+
+    @Override
+    public short getIndex() {
+        return index;
+    }
+
+    @Override
+    public OFBsnGetIpMaskReply.Builder setIndex(short index) {
+        this.index = index;
+        this.indexSet = true;
+        return this;
+    }
+    @Override
+    public long getMask() {
+        return mask;
+    }
+
+    @Override
+    public OFBsnGetIpMaskReply.Builder setMask(long mask) {
+        this.mask = mask;
+        this.maskSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnGetIpMaskReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                short index = this.indexSet ? this.index : parentMessage.index;
+                long mask = this.maskSet ? this.mask : parentMessage.mask;
+
+                //
+                return new OFBsnGetIpMaskReplyVer10(
+                    xid,
+                    index,
+                    mask
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnGetIpMaskReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean indexSet;
+        private short index;
+        private boolean maskSet;
+        private long mask;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnGetIpMaskReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x2L;
+    }
+
+    @Override
+    public short getIndex() {
+        return index;
+    }
+
+    @Override
+    public OFBsnGetIpMaskReply.Builder setIndex(short index) {
+        this.index = index;
+        this.indexSet = true;
+        return this;
+    }
+    @Override
+    public long getMask() {
+        return mask;
+    }
+
+    @Override
+    public OFBsnGetIpMaskReply.Builder setMask(long mask) {
+        this.mask = mask;
+        this.maskSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnGetIpMaskReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            short index = this.indexSet ? this.index : DEFAULT_INDEX;
+            long mask = this.maskSet ? this.mask : DEFAULT_MASK;
+
+
+            return new OFBsnGetIpMaskReplyVer10(
+                    xid,
+                    index,
+                    mask
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnGetIpMaskReply> {
+        @Override
+        public OFBsnGetIpMaskReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 24)
+                throw new OFParseError("Wrong length: Expected=24(24), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x2L
+            int subtype = bb.readInt();
+            if(subtype != 0x2)
+                throw new OFParseError("Wrong subtype: Expected=0x2L(0x2L), got="+subtype);
+            short index = U8.f(bb.readByte());
+            // pad: 3 bytes
+            bb.skipBytes(3);
+            long mask = U32.f(bb.readInt());
+
+            OFBsnGetIpMaskReplyVer10 bsnGetIpMaskReplyVer10 = new OFBsnGetIpMaskReplyVer10(
+                    xid,
+                      index,
+                      mask
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnGetIpMaskReplyVer10);
+            return bsnGetIpMaskReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnGetIpMaskReplyVer10Funnel FUNNEL = new OFBsnGetIpMaskReplyVer10Funnel();
+    static class OFBsnGetIpMaskReplyVer10Funnel implements Funnel<OFBsnGetIpMaskReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnGetIpMaskReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 24
+            sink.putShort((short) 0x18);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x2L
+            sink.putInt(0x2);
+            sink.putShort(message.index);
+            // skip pad (3 bytes)
+            sink.putLong(message.mask);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnGetIpMaskReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnGetIpMaskReplyVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 24
+            bb.writeShort((short) 0x18);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x2L
+            bb.writeInt(0x2);
+            bb.writeByte(U8.t(message.index));
+            // pad: 3 bytes
+            bb.writeZero(3);
+            bb.writeInt(U32.t(message.mask));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnGetIpMaskReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("index=").append(index);
+        b.append(", ");
+        b.append("mask=").append(mask);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnGetIpMaskReplyVer10 other = (OFBsnGetIpMaskReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( index != other.index)
+            return false;
+        if( mask != other.mask)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + index;
+        result = prime *  (int) (mask ^ (mask >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetIpMaskRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetIpMaskRequestVer10.java
new file mode 100644
index 0000000..f35f0dc
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetIpMaskRequestVer10.java
@@ -0,0 +1,366 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnGetIpMaskRequestVer10 implements OFBsnGetIpMaskRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnGetIpMaskRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 24;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static short DEFAULT_INDEX = (short) 0x0;
+
+    // OF message fields
+    private final long xid;
+    private final short index;
+//
+    // Immutable default instance
+    final static OFBsnGetIpMaskRequestVer10 DEFAULT = new OFBsnGetIpMaskRequestVer10(
+        DEFAULT_XID, DEFAULT_INDEX
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnGetIpMaskRequestVer10(long xid, short index) {
+        this.xid = xid;
+        this.index = index;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1L;
+    }
+
+    @Override
+    public short getIndex() {
+        return index;
+    }
+
+
+
+    public OFBsnGetIpMaskRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnGetIpMaskRequest.Builder {
+        final OFBsnGetIpMaskRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean indexSet;
+        private short index;
+
+        BuilderWithParent(OFBsnGetIpMaskRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnGetIpMaskRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1L;
+    }
+
+    @Override
+    public short getIndex() {
+        return index;
+    }
+
+    @Override
+    public OFBsnGetIpMaskRequest.Builder setIndex(short index) {
+        this.index = index;
+        this.indexSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnGetIpMaskRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                short index = this.indexSet ? this.index : parentMessage.index;
+
+                //
+                return new OFBsnGetIpMaskRequestVer10(
+                    xid,
+                    index
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnGetIpMaskRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean indexSet;
+        private short index;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnGetIpMaskRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1L;
+    }
+
+    @Override
+    public short getIndex() {
+        return index;
+    }
+
+    @Override
+    public OFBsnGetIpMaskRequest.Builder setIndex(short index) {
+        this.index = index;
+        this.indexSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnGetIpMaskRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            short index = this.indexSet ? this.index : DEFAULT_INDEX;
+
+
+            return new OFBsnGetIpMaskRequestVer10(
+                    xid,
+                    index
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnGetIpMaskRequest> {
+        @Override
+        public OFBsnGetIpMaskRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 24)
+                throw new OFParseError("Wrong length: Expected=24(24), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x1L
+            int subtype = bb.readInt();
+            if(subtype != 0x1)
+                throw new OFParseError("Wrong subtype: Expected=0x1L(0x1L), got="+subtype);
+            short index = U8.f(bb.readByte());
+            // pad: 7 bytes
+            bb.skipBytes(7);
+
+            OFBsnGetIpMaskRequestVer10 bsnGetIpMaskRequestVer10 = new OFBsnGetIpMaskRequestVer10(
+                    xid,
+                      index
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnGetIpMaskRequestVer10);
+            return bsnGetIpMaskRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnGetIpMaskRequestVer10Funnel FUNNEL = new OFBsnGetIpMaskRequestVer10Funnel();
+    static class OFBsnGetIpMaskRequestVer10Funnel implements Funnel<OFBsnGetIpMaskRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnGetIpMaskRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 24
+            sink.putShort((short) 0x18);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x1L
+            sink.putInt(0x1);
+            sink.putShort(message.index);
+            // skip pad (7 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnGetIpMaskRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnGetIpMaskRequestVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 24
+            bb.writeShort((short) 0x18);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x1L
+            bb.writeInt(0x1);
+            bb.writeByte(U8.t(message.index));
+            // pad: 7 bytes
+            bb.writeZero(7);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnGetIpMaskRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("index=").append(index);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnGetIpMaskRequestVer10 other = (OFBsnGetIpMaskRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( index != other.index)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + index;
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetL2TableReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetL2TableReplyVer10.java
new file mode 100644
index 0000000..852182c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetL2TableReplyVer10.java
@@ -0,0 +1,418 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnGetL2TableReplyVer10 implements OFBsnGetL2TableReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnGetL2TableReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 24;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static short DEFAULT_L2_TABLE_ENABLE = (short) 0x0;
+        private final static int DEFAULT_L2_TABLE_PRIORITY = 0x0;
+
+    // OF message fields
+    private final long xid;
+    private final short l2TableEnable;
+    private final int l2TablePriority;
+//
+    // Immutable default instance
+    final static OFBsnGetL2TableReplyVer10 DEFAULT = new OFBsnGetL2TableReplyVer10(
+        DEFAULT_XID, DEFAULT_L2_TABLE_ENABLE, DEFAULT_L2_TABLE_PRIORITY
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnGetL2TableReplyVer10(long xid, short l2TableEnable, int l2TablePriority) {
+        this.xid = xid;
+        this.l2TableEnable = l2TableEnable;
+        this.l2TablePriority = l2TablePriority;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xeL;
+    }
+
+    @Override
+    public short getL2TableEnable() {
+        return l2TableEnable;
+    }
+
+    @Override
+    public int getL2TablePriority() {
+        return l2TablePriority;
+    }
+
+
+
+    public OFBsnGetL2TableReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnGetL2TableReply.Builder {
+        final OFBsnGetL2TableReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean l2TableEnableSet;
+        private short l2TableEnable;
+        private boolean l2TablePrioritySet;
+        private int l2TablePriority;
+
+        BuilderWithParent(OFBsnGetL2TableReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnGetL2TableReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xeL;
+    }
+
+    @Override
+    public short getL2TableEnable() {
+        return l2TableEnable;
+    }
+
+    @Override
+    public OFBsnGetL2TableReply.Builder setL2TableEnable(short l2TableEnable) {
+        this.l2TableEnable = l2TableEnable;
+        this.l2TableEnableSet = true;
+        return this;
+    }
+    @Override
+    public int getL2TablePriority() {
+        return l2TablePriority;
+    }
+
+    @Override
+    public OFBsnGetL2TableReply.Builder setL2TablePriority(int l2TablePriority) {
+        this.l2TablePriority = l2TablePriority;
+        this.l2TablePrioritySet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnGetL2TableReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                short l2TableEnable = this.l2TableEnableSet ? this.l2TableEnable : parentMessage.l2TableEnable;
+                int l2TablePriority = this.l2TablePrioritySet ? this.l2TablePriority : parentMessage.l2TablePriority;
+
+                //
+                return new OFBsnGetL2TableReplyVer10(
+                    xid,
+                    l2TableEnable,
+                    l2TablePriority
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnGetL2TableReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean l2TableEnableSet;
+        private short l2TableEnable;
+        private boolean l2TablePrioritySet;
+        private int l2TablePriority;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnGetL2TableReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xeL;
+    }
+
+    @Override
+    public short getL2TableEnable() {
+        return l2TableEnable;
+    }
+
+    @Override
+    public OFBsnGetL2TableReply.Builder setL2TableEnable(short l2TableEnable) {
+        this.l2TableEnable = l2TableEnable;
+        this.l2TableEnableSet = true;
+        return this;
+    }
+    @Override
+    public int getL2TablePriority() {
+        return l2TablePriority;
+    }
+
+    @Override
+    public OFBsnGetL2TableReply.Builder setL2TablePriority(int l2TablePriority) {
+        this.l2TablePriority = l2TablePriority;
+        this.l2TablePrioritySet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnGetL2TableReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            short l2TableEnable = this.l2TableEnableSet ? this.l2TableEnable : DEFAULT_L2_TABLE_ENABLE;
+            int l2TablePriority = this.l2TablePrioritySet ? this.l2TablePriority : DEFAULT_L2_TABLE_PRIORITY;
+
+
+            return new OFBsnGetL2TableReplyVer10(
+                    xid,
+                    l2TableEnable,
+                    l2TablePriority
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnGetL2TableReply> {
+        @Override
+        public OFBsnGetL2TableReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 24)
+                throw new OFParseError("Wrong length: Expected=24(24), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0xeL
+            int subtype = bb.readInt();
+            if(subtype != 0xe)
+                throw new OFParseError("Wrong subtype: Expected=0xeL(0xeL), got="+subtype);
+            short l2TableEnable = U8.f(bb.readByte());
+            // pad: 1 bytes
+            bb.skipBytes(1);
+            int l2TablePriority = U16.f(bb.readShort());
+            // pad: 4 bytes
+            bb.skipBytes(4);
+
+            OFBsnGetL2TableReplyVer10 bsnGetL2TableReplyVer10 = new OFBsnGetL2TableReplyVer10(
+                    xid,
+                      l2TableEnable,
+                      l2TablePriority
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnGetL2TableReplyVer10);
+            return bsnGetL2TableReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnGetL2TableReplyVer10Funnel FUNNEL = new OFBsnGetL2TableReplyVer10Funnel();
+    static class OFBsnGetL2TableReplyVer10Funnel implements Funnel<OFBsnGetL2TableReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnGetL2TableReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 24
+            sink.putShort((short) 0x18);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0xeL
+            sink.putInt(0xe);
+            sink.putShort(message.l2TableEnable);
+            // skip pad (1 bytes)
+            sink.putInt(message.l2TablePriority);
+            // skip pad (4 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnGetL2TableReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnGetL2TableReplyVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 24
+            bb.writeShort((short) 0x18);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0xeL
+            bb.writeInt(0xe);
+            bb.writeByte(U8.t(message.l2TableEnable));
+            // pad: 1 bytes
+            bb.writeZero(1);
+            bb.writeShort(U16.t(message.l2TablePriority));
+            // pad: 4 bytes
+            bb.writeZero(4);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnGetL2TableReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("l2TableEnable=").append(l2TableEnable);
+        b.append(", ");
+        b.append("l2TablePriority=").append(l2TablePriority);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnGetL2TableReplyVer10 other = (OFBsnGetL2TableReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( l2TableEnable != other.l2TableEnable)
+            return false;
+        if( l2TablePriority != other.l2TablePriority)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + l2TableEnable;
+        result = prime * result + l2TablePriority;
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetL2TableRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetL2TableRequestVer10.java
new file mode 100644
index 0000000..8d432c1
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetL2TableRequestVer10.java
@@ -0,0 +1,314 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnGetL2TableRequestVer10 implements OFBsnGetL2TableRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnGetL2TableRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 16;
+
+        private final static long DEFAULT_XID = 0x0L;
+
+    // OF message fields
+    private final long xid;
+//
+    // Immutable default instance
+    final static OFBsnGetL2TableRequestVer10 DEFAULT = new OFBsnGetL2TableRequestVer10(
+        DEFAULT_XID
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnGetL2TableRequestVer10(long xid) {
+        this.xid = xid;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xdL;
+    }
+
+
+
+    public OFBsnGetL2TableRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnGetL2TableRequest.Builder {
+        final OFBsnGetL2TableRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+
+        BuilderWithParent(OFBsnGetL2TableRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnGetL2TableRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xdL;
+    }
+
+
+
+        @Override
+        public OFBsnGetL2TableRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+
+                //
+                return new OFBsnGetL2TableRequestVer10(
+                    xid
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnGetL2TableRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnGetL2TableRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xdL;
+    }
+
+//
+        @Override
+        public OFBsnGetL2TableRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+
+
+            return new OFBsnGetL2TableRequestVer10(
+                    xid
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnGetL2TableRequest> {
+        @Override
+        public OFBsnGetL2TableRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 16)
+                throw new OFParseError("Wrong length: Expected=16(16), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0xdL
+            int subtype = bb.readInt();
+            if(subtype != 0xd)
+                throw new OFParseError("Wrong subtype: Expected=0xdL(0xdL), got="+subtype);
+
+            OFBsnGetL2TableRequestVer10 bsnGetL2TableRequestVer10 = new OFBsnGetL2TableRequestVer10(
+                    xid
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnGetL2TableRequestVer10);
+            return bsnGetL2TableRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnGetL2TableRequestVer10Funnel FUNNEL = new OFBsnGetL2TableRequestVer10Funnel();
+    static class OFBsnGetL2TableRequestVer10Funnel implements Funnel<OFBsnGetL2TableRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnGetL2TableRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 16
+            sink.putShort((short) 0x10);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0xdL
+            sink.putInt(0xd);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnGetL2TableRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnGetL2TableRequestVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 16
+            bb.writeShort((short) 0x10);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0xdL
+            bb.writeInt(0xd);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnGetL2TableRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnGetL2TableRequestVer10 other = (OFBsnGetL2TableRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetMirroringReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetMirroringReplyVer10.java
new file mode 100644
index 0000000..080b04f
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetMirroringReplyVer10.java
@@ -0,0 +1,366 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnGetMirroringReplyVer10 implements OFBsnGetMirroringReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnGetMirroringReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 20;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static short DEFAULT_REPORT_MIRROR_PORTS = (short) 0x0;
+
+    // OF message fields
+    private final long xid;
+    private final short reportMirrorPorts;
+//
+    // Immutable default instance
+    final static OFBsnGetMirroringReplyVer10 DEFAULT = new OFBsnGetMirroringReplyVer10(
+        DEFAULT_XID, DEFAULT_REPORT_MIRROR_PORTS
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnGetMirroringReplyVer10(long xid, short reportMirrorPorts) {
+        this.xid = xid;
+        this.reportMirrorPorts = reportMirrorPorts;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x5L;
+    }
+
+    @Override
+    public short getReportMirrorPorts() {
+        return reportMirrorPorts;
+    }
+
+
+
+    public OFBsnGetMirroringReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnGetMirroringReply.Builder {
+        final OFBsnGetMirroringReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean reportMirrorPortsSet;
+        private short reportMirrorPorts;
+
+        BuilderWithParent(OFBsnGetMirroringReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnGetMirroringReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x5L;
+    }
+
+    @Override
+    public short getReportMirrorPorts() {
+        return reportMirrorPorts;
+    }
+
+    @Override
+    public OFBsnGetMirroringReply.Builder setReportMirrorPorts(short reportMirrorPorts) {
+        this.reportMirrorPorts = reportMirrorPorts;
+        this.reportMirrorPortsSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnGetMirroringReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                short reportMirrorPorts = this.reportMirrorPortsSet ? this.reportMirrorPorts : parentMessage.reportMirrorPorts;
+
+                //
+                return new OFBsnGetMirroringReplyVer10(
+                    xid,
+                    reportMirrorPorts
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnGetMirroringReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean reportMirrorPortsSet;
+        private short reportMirrorPorts;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnGetMirroringReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x5L;
+    }
+
+    @Override
+    public short getReportMirrorPorts() {
+        return reportMirrorPorts;
+    }
+
+    @Override
+    public OFBsnGetMirroringReply.Builder setReportMirrorPorts(short reportMirrorPorts) {
+        this.reportMirrorPorts = reportMirrorPorts;
+        this.reportMirrorPortsSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnGetMirroringReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            short reportMirrorPorts = this.reportMirrorPortsSet ? this.reportMirrorPorts : DEFAULT_REPORT_MIRROR_PORTS;
+
+
+            return new OFBsnGetMirroringReplyVer10(
+                    xid,
+                    reportMirrorPorts
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnGetMirroringReply> {
+        @Override
+        public OFBsnGetMirroringReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 20)
+                throw new OFParseError("Wrong length: Expected=20(20), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x5L
+            int subtype = bb.readInt();
+            if(subtype != 0x5)
+                throw new OFParseError("Wrong subtype: Expected=0x5L(0x5L), got="+subtype);
+            short reportMirrorPorts = U8.f(bb.readByte());
+            // pad: 3 bytes
+            bb.skipBytes(3);
+
+            OFBsnGetMirroringReplyVer10 bsnGetMirroringReplyVer10 = new OFBsnGetMirroringReplyVer10(
+                    xid,
+                      reportMirrorPorts
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnGetMirroringReplyVer10);
+            return bsnGetMirroringReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnGetMirroringReplyVer10Funnel FUNNEL = new OFBsnGetMirroringReplyVer10Funnel();
+    static class OFBsnGetMirroringReplyVer10Funnel implements Funnel<OFBsnGetMirroringReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnGetMirroringReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 20
+            sink.putShort((short) 0x14);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x5L
+            sink.putInt(0x5);
+            sink.putShort(message.reportMirrorPorts);
+            // skip pad (3 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnGetMirroringReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnGetMirroringReplyVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 20
+            bb.writeShort((short) 0x14);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x5L
+            bb.writeInt(0x5);
+            bb.writeByte(U8.t(message.reportMirrorPorts));
+            // pad: 3 bytes
+            bb.writeZero(3);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnGetMirroringReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("reportMirrorPorts=").append(reportMirrorPorts);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnGetMirroringReplyVer10 other = (OFBsnGetMirroringReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( reportMirrorPorts != other.reportMirrorPorts)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + reportMirrorPorts;
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetMirroringRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetMirroringRequestVer10.java
new file mode 100644
index 0000000..e4422dd
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnGetMirroringRequestVer10.java
@@ -0,0 +1,366 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnGetMirroringRequestVer10 implements OFBsnGetMirroringRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnGetMirroringRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 20;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static short DEFAULT_REPORT_MIRROR_PORTS = (short) 0x0;
+
+    // OF message fields
+    private final long xid;
+    private final short reportMirrorPorts;
+//
+    // Immutable default instance
+    final static OFBsnGetMirroringRequestVer10 DEFAULT = new OFBsnGetMirroringRequestVer10(
+        DEFAULT_XID, DEFAULT_REPORT_MIRROR_PORTS
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnGetMirroringRequestVer10(long xid, short reportMirrorPorts) {
+        this.xid = xid;
+        this.reportMirrorPorts = reportMirrorPorts;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x4L;
+    }
+
+    @Override
+    public short getReportMirrorPorts() {
+        return reportMirrorPorts;
+    }
+
+
+
+    public OFBsnGetMirroringRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnGetMirroringRequest.Builder {
+        final OFBsnGetMirroringRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean reportMirrorPortsSet;
+        private short reportMirrorPorts;
+
+        BuilderWithParent(OFBsnGetMirroringRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnGetMirroringRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x4L;
+    }
+
+    @Override
+    public short getReportMirrorPorts() {
+        return reportMirrorPorts;
+    }
+
+    @Override
+    public OFBsnGetMirroringRequest.Builder setReportMirrorPorts(short reportMirrorPorts) {
+        this.reportMirrorPorts = reportMirrorPorts;
+        this.reportMirrorPortsSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnGetMirroringRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                short reportMirrorPorts = this.reportMirrorPortsSet ? this.reportMirrorPorts : parentMessage.reportMirrorPorts;
+
+                //
+                return new OFBsnGetMirroringRequestVer10(
+                    xid,
+                    reportMirrorPorts
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnGetMirroringRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean reportMirrorPortsSet;
+        private short reportMirrorPorts;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnGetMirroringRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x4L;
+    }
+
+    @Override
+    public short getReportMirrorPorts() {
+        return reportMirrorPorts;
+    }
+
+    @Override
+    public OFBsnGetMirroringRequest.Builder setReportMirrorPorts(short reportMirrorPorts) {
+        this.reportMirrorPorts = reportMirrorPorts;
+        this.reportMirrorPortsSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnGetMirroringRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            short reportMirrorPorts = this.reportMirrorPortsSet ? this.reportMirrorPorts : DEFAULT_REPORT_MIRROR_PORTS;
+
+
+            return new OFBsnGetMirroringRequestVer10(
+                    xid,
+                    reportMirrorPorts
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnGetMirroringRequest> {
+        @Override
+        public OFBsnGetMirroringRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 20)
+                throw new OFParseError("Wrong length: Expected=20(20), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x4L
+            int subtype = bb.readInt();
+            if(subtype != 0x4)
+                throw new OFParseError("Wrong subtype: Expected=0x4L(0x4L), got="+subtype);
+            short reportMirrorPorts = U8.f(bb.readByte());
+            // pad: 3 bytes
+            bb.skipBytes(3);
+
+            OFBsnGetMirroringRequestVer10 bsnGetMirroringRequestVer10 = new OFBsnGetMirroringRequestVer10(
+                    xid,
+                      reportMirrorPorts
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnGetMirroringRequestVer10);
+            return bsnGetMirroringRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnGetMirroringRequestVer10Funnel FUNNEL = new OFBsnGetMirroringRequestVer10Funnel();
+    static class OFBsnGetMirroringRequestVer10Funnel implements Funnel<OFBsnGetMirroringRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnGetMirroringRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 20
+            sink.putShort((short) 0x14);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x4L
+            sink.putInt(0x4);
+            sink.putShort(message.reportMirrorPorts);
+            // skip pad (3 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnGetMirroringRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnGetMirroringRequestVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 20
+            bb.writeShort((short) 0x14);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x4L
+            bb.writeInt(0x4);
+            bb.writeByte(U8.t(message.reportMirrorPorts));
+            // pad: 3 bytes
+            bb.writeZero(3);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnGetMirroringRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("reportMirrorPorts=").append(reportMirrorPorts);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnGetMirroringRequestVer10 other = (OFBsnGetMirroringRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( reportMirrorPorts != other.reportMirrorPorts)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + reportMirrorPorts;
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnHeaderVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnHeaderVer10.java
new file mode 100644
index 0000000..e2d6efe
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnHeaderVer10.java
@@ -0,0 +1,169 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_virtual_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+import java.util.Set;
+
+abstract class OFBsnHeaderVer10 {
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 16;
+
+
+    public final static OFBsnHeaderVer10.Reader READER = new Reader();
+
+    static class Reader implements OFMessageReader<OFBsnHeader> {
+        @Override
+        public OFBsnHeader readFrom(ChannelBuffer bb) throws OFParseError {
+            if(bb.readableBytes() < MINIMUM_LENGTH)
+                return null;
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            int subtype = bb.readInt();
+            bb.readerIndex(start);
+            switch(subtype) {
+               case 0x16:
+                   // discriminator value 0x16L=0x16L for class OFBsnBwClearDataReplyVer10
+                   return OFBsnBwClearDataReplyVer10.READER.readFrom(bb);
+               case 0x15:
+                   // discriminator value 0x15L=0x15L for class OFBsnBwClearDataRequestVer10
+                   return OFBsnBwClearDataRequestVer10.READER.readFrom(bb);
+               case 0x14:
+                   // discriminator value 0x14L=0x14L for class OFBsnBwEnableGetReplyVer10
+                   return OFBsnBwEnableGetReplyVer10.READER.readFrom(bb);
+               case 0x13:
+                   // discriminator value 0x13L=0x13L for class OFBsnBwEnableGetRequestVer10
+                   return OFBsnBwEnableGetRequestVer10.READER.readFrom(bb);
+               case 0x17:
+                   // discriminator value 0x17L=0x17L for class OFBsnBwEnableSetReplyVer10
+                   return OFBsnBwEnableSetReplyVer10.READER.readFrom(bb);
+               case 0x12:
+                   // discriminator value 0x12L=0x12L for class OFBsnBwEnableSetRequestVer10
+                   return OFBsnBwEnableSetRequestVer10.READER.readFrom(bb);
+               case 0xa:
+                   // discriminator value 0xaL=0xaL for class OFBsnGetInterfacesReplyVer10
+                   return OFBsnGetInterfacesReplyVer10.READER.readFrom(bb);
+               case 0x9:
+                   // discriminator value 0x9L=0x9L for class OFBsnGetInterfacesRequestVer10
+                   return OFBsnGetInterfacesRequestVer10.READER.readFrom(bb);
+               case 0x2:
+                   // discriminator value 0x2L=0x2L for class OFBsnGetIpMaskReplyVer10
+                   return OFBsnGetIpMaskReplyVer10.READER.readFrom(bb);
+               case 0x1:
+                   // discriminator value 0x1L=0x1L for class OFBsnGetIpMaskRequestVer10
+                   return OFBsnGetIpMaskRequestVer10.READER.readFrom(bb);
+               case 0xe:
+                   // discriminator value 0xeL=0xeL for class OFBsnGetL2TableReplyVer10
+                   return OFBsnGetL2TableReplyVer10.READER.readFrom(bb);
+               case 0xd:
+                   // discriminator value 0xdL=0xdL for class OFBsnGetL2TableRequestVer10
+                   return OFBsnGetL2TableRequestVer10.READER.readFrom(bb);
+               case 0x5:
+                   // discriminator value 0x5L=0x5L for class OFBsnGetMirroringReplyVer10
+                   return OFBsnGetMirroringReplyVer10.READER.readFrom(bb);
+               case 0x4:
+                   // discriminator value 0x4L=0x4L for class OFBsnGetMirroringRequestVer10
+                   return OFBsnGetMirroringRequestVer10.READER.readFrom(bb);
+               case 0x1c:
+                   // discriminator value 0x1cL=0x1cL for class OFBsnHybridGetReplyVer10
+                   return OFBsnHybridGetReplyVer10.READER.readFrom(bb);
+               case 0x1b:
+                   // discriminator value 0x1bL=0x1bL for class OFBsnHybridGetRequestVer10
+                   return OFBsnHybridGetRequestVer10.READER.readFrom(bb);
+               case 0x22:
+                   // discriminator value 0x22L=0x22L for class OFBsnPduRxReplyVer10
+                   return OFBsnPduRxReplyVer10.READER.readFrom(bb);
+               case 0x21:
+                   // discriminator value 0x21L=0x21L for class OFBsnPduRxRequestVer10
+                   return OFBsnPduRxRequestVer10.READER.readFrom(bb);
+               case 0x23:
+                   // discriminator value 0x23L=0x23L for class OFBsnPduRxTimeoutVer10
+                   return OFBsnPduRxTimeoutVer10.READER.readFrom(bb);
+               case 0x20:
+                   // discriminator value 0x20L=0x20L for class OFBsnPduTxReplyVer10
+                   return OFBsnPduTxReplyVer10.READER.readFrom(bb);
+               case 0x1f:
+                   // discriminator value 0x1fL=0x1fL for class OFBsnPduTxRequestVer10
+                   return OFBsnPduTxRequestVer10.READER.readFrom(bb);
+               case 0x0:
+                   // discriminator value 0x0L=0x0L for class OFBsnSetIpMaskVer10
+                   return OFBsnSetIpMaskVer10.READER.readFrom(bb);
+               case 0x18:
+                   // discriminator value 0x18L=0x18L for class OFBsnSetL2TableReplyVer10
+                   return OFBsnSetL2TableReplyVer10.READER.readFrom(bb);
+               case 0xc:
+                   // discriminator value 0xcL=0xcL for class OFBsnSetL2TableRequestVer10
+                   return OFBsnSetL2TableRequestVer10.READER.readFrom(bb);
+               case 0x3:
+                   // discriminator value 0x3L=0x3L for class OFBsnSetMirroringVer10
+                   return OFBsnSetMirroringVer10.READER.readFrom(bb);
+               case 0x19:
+                   // discriminator value 0x19L=0x19L for class OFBsnSetPktinSuppressionReplyVer10
+                   return OFBsnSetPktinSuppressionReplyVer10.READER.readFrom(bb);
+               case 0xb:
+                   // discriminator value 0xbL=0xbL for class OFBsnSetPktinSuppressionRequestVer10
+                   return OFBsnSetPktinSuppressionRequestVer10.READER.readFrom(bb);
+               case 0x6:
+                   // discriminator value 0x6L=0x6L for class OFBsnShellCommandVer10
+                   return OFBsnShellCommandVer10.READER.readFrom(bb);
+               case 0x7:
+                   // discriminator value 0x7L=0x7L for class OFBsnShellOutputVer10
+                   return OFBsnShellOutputVer10.READER.readFrom(bb);
+               case 0x8:
+                   // discriminator value 0x8L=0x8L for class OFBsnShellStatusVer10
+                   return OFBsnShellStatusVer10.READER.readFrom(bb);
+               case 0x10:
+                   // discriminator value 0x10L=0x10L for class OFBsnVirtualPortCreateReplyVer10
+                   return OFBsnVirtualPortCreateReplyVer10.READER.readFrom(bb);
+               case 0xf:
+                   // discriminator value 0xfL=0xfL for class OFBsnVirtualPortCreateRequestVer10
+                   return OFBsnVirtualPortCreateRequestVer10.READER.readFrom(bb);
+               case 0x1a:
+                   // discriminator value 0x1aL=0x1aL for class OFBsnVirtualPortRemoveReplyVer10
+                   return OFBsnVirtualPortRemoveReplyVer10.READER.readFrom(bb);
+               case 0x11:
+                   // discriminator value 0x11L=0x11L for class OFBsnVirtualPortRemoveRequestVer10
+                   return OFBsnVirtualPortRemoveRequestVer10.READER.readFrom(bb);
+               default:
+                   throw new OFParseError("Unknown value for discriminator subtype of class OFBsnHeaderVer10: " + subtype);
+            }
+        }
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnHybridGetReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnHybridGetReplyVer10.java
new file mode 100644
index 0000000..afe00bd
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnHybridGetReplyVer10.java
@@ -0,0 +1,418 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnHybridGetReplyVer10 implements OFBsnHybridGetReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnHybridGetReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 24;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static short DEFAULT_HYBRID_ENABLE = (short) 0x0;
+        private final static int DEFAULT_HYBRID_VERSION = 0x0;
+
+    // OF message fields
+    private final long xid;
+    private final short hybridEnable;
+    private final int hybridVersion;
+//
+    // Immutable default instance
+    final static OFBsnHybridGetReplyVer10 DEFAULT = new OFBsnHybridGetReplyVer10(
+        DEFAULT_XID, DEFAULT_HYBRID_ENABLE, DEFAULT_HYBRID_VERSION
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnHybridGetReplyVer10(long xid, short hybridEnable, int hybridVersion) {
+        this.xid = xid;
+        this.hybridEnable = hybridEnable;
+        this.hybridVersion = hybridVersion;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1cL;
+    }
+
+    @Override
+    public short getHybridEnable() {
+        return hybridEnable;
+    }
+
+    @Override
+    public int getHybridVersion() {
+        return hybridVersion;
+    }
+
+
+
+    public OFBsnHybridGetReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnHybridGetReply.Builder {
+        final OFBsnHybridGetReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean hybridEnableSet;
+        private short hybridEnable;
+        private boolean hybridVersionSet;
+        private int hybridVersion;
+
+        BuilderWithParent(OFBsnHybridGetReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnHybridGetReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1cL;
+    }
+
+    @Override
+    public short getHybridEnable() {
+        return hybridEnable;
+    }
+
+    @Override
+    public OFBsnHybridGetReply.Builder setHybridEnable(short hybridEnable) {
+        this.hybridEnable = hybridEnable;
+        this.hybridEnableSet = true;
+        return this;
+    }
+    @Override
+    public int getHybridVersion() {
+        return hybridVersion;
+    }
+
+    @Override
+    public OFBsnHybridGetReply.Builder setHybridVersion(int hybridVersion) {
+        this.hybridVersion = hybridVersion;
+        this.hybridVersionSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnHybridGetReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                short hybridEnable = this.hybridEnableSet ? this.hybridEnable : parentMessage.hybridEnable;
+                int hybridVersion = this.hybridVersionSet ? this.hybridVersion : parentMessage.hybridVersion;
+
+                //
+                return new OFBsnHybridGetReplyVer10(
+                    xid,
+                    hybridEnable,
+                    hybridVersion
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnHybridGetReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean hybridEnableSet;
+        private short hybridEnable;
+        private boolean hybridVersionSet;
+        private int hybridVersion;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnHybridGetReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1cL;
+    }
+
+    @Override
+    public short getHybridEnable() {
+        return hybridEnable;
+    }
+
+    @Override
+    public OFBsnHybridGetReply.Builder setHybridEnable(short hybridEnable) {
+        this.hybridEnable = hybridEnable;
+        this.hybridEnableSet = true;
+        return this;
+    }
+    @Override
+    public int getHybridVersion() {
+        return hybridVersion;
+    }
+
+    @Override
+    public OFBsnHybridGetReply.Builder setHybridVersion(int hybridVersion) {
+        this.hybridVersion = hybridVersion;
+        this.hybridVersionSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnHybridGetReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            short hybridEnable = this.hybridEnableSet ? this.hybridEnable : DEFAULT_HYBRID_ENABLE;
+            int hybridVersion = this.hybridVersionSet ? this.hybridVersion : DEFAULT_HYBRID_VERSION;
+
+
+            return new OFBsnHybridGetReplyVer10(
+                    xid,
+                    hybridEnable,
+                    hybridVersion
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnHybridGetReply> {
+        @Override
+        public OFBsnHybridGetReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 24)
+                throw new OFParseError("Wrong length: Expected=24(24), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x1cL
+            int subtype = bb.readInt();
+            if(subtype != 0x1c)
+                throw new OFParseError("Wrong subtype: Expected=0x1cL(0x1cL), got="+subtype);
+            short hybridEnable = U8.f(bb.readByte());
+            // pad: 1 bytes
+            bb.skipBytes(1);
+            int hybridVersion = U16.f(bb.readShort());
+            // pad: 4 bytes
+            bb.skipBytes(4);
+
+            OFBsnHybridGetReplyVer10 bsnHybridGetReplyVer10 = new OFBsnHybridGetReplyVer10(
+                    xid,
+                      hybridEnable,
+                      hybridVersion
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnHybridGetReplyVer10);
+            return bsnHybridGetReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnHybridGetReplyVer10Funnel FUNNEL = new OFBsnHybridGetReplyVer10Funnel();
+    static class OFBsnHybridGetReplyVer10Funnel implements Funnel<OFBsnHybridGetReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnHybridGetReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 24
+            sink.putShort((short) 0x18);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x1cL
+            sink.putInt(0x1c);
+            sink.putShort(message.hybridEnable);
+            // skip pad (1 bytes)
+            sink.putInt(message.hybridVersion);
+            // skip pad (4 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnHybridGetReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnHybridGetReplyVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 24
+            bb.writeShort((short) 0x18);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x1cL
+            bb.writeInt(0x1c);
+            bb.writeByte(U8.t(message.hybridEnable));
+            // pad: 1 bytes
+            bb.writeZero(1);
+            bb.writeShort(U16.t(message.hybridVersion));
+            // pad: 4 bytes
+            bb.writeZero(4);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnHybridGetReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("hybridEnable=").append(hybridEnable);
+        b.append(", ");
+        b.append("hybridVersion=").append(hybridVersion);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnHybridGetReplyVer10 other = (OFBsnHybridGetReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( hybridEnable != other.hybridEnable)
+            return false;
+        if( hybridVersion != other.hybridVersion)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + hybridEnable;
+        result = prime * result + hybridVersion;
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnHybridGetRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnHybridGetRequestVer10.java
new file mode 100644
index 0000000..3282c8d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnHybridGetRequestVer10.java
@@ -0,0 +1,314 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnHybridGetRequestVer10 implements OFBsnHybridGetRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnHybridGetRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 16;
+
+        private final static long DEFAULT_XID = 0x0L;
+
+    // OF message fields
+    private final long xid;
+//
+    // Immutable default instance
+    final static OFBsnHybridGetRequestVer10 DEFAULT = new OFBsnHybridGetRequestVer10(
+        DEFAULT_XID
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnHybridGetRequestVer10(long xid) {
+        this.xid = xid;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1bL;
+    }
+
+
+
+    public OFBsnHybridGetRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnHybridGetRequest.Builder {
+        final OFBsnHybridGetRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+
+        BuilderWithParent(OFBsnHybridGetRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnHybridGetRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1bL;
+    }
+
+
+
+        @Override
+        public OFBsnHybridGetRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+
+                //
+                return new OFBsnHybridGetRequestVer10(
+                    xid
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnHybridGetRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnHybridGetRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1bL;
+    }
+
+//
+        @Override
+        public OFBsnHybridGetRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+
+
+            return new OFBsnHybridGetRequestVer10(
+                    xid
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnHybridGetRequest> {
+        @Override
+        public OFBsnHybridGetRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 16)
+                throw new OFParseError("Wrong length: Expected=16(16), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x1bL
+            int subtype = bb.readInt();
+            if(subtype != 0x1b)
+                throw new OFParseError("Wrong subtype: Expected=0x1bL(0x1bL), got="+subtype);
+
+            OFBsnHybridGetRequestVer10 bsnHybridGetRequestVer10 = new OFBsnHybridGetRequestVer10(
+                    xid
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnHybridGetRequestVer10);
+            return bsnHybridGetRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnHybridGetRequestVer10Funnel FUNNEL = new OFBsnHybridGetRequestVer10Funnel();
+    static class OFBsnHybridGetRequestVer10Funnel implements Funnel<OFBsnHybridGetRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnHybridGetRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 16
+            sink.putShort((short) 0x10);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x1bL
+            sink.putInt(0x1b);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnHybridGetRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnHybridGetRequestVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 16
+            bb.writeShort((short) 0x10);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x1bL
+            bb.writeInt(0x1b);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnHybridGetRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnHybridGetRequestVer10 other = (OFBsnHybridGetRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnInterfaceVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnInterfaceVer10.java
new file mode 100644
index 0000000..19db624
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnInterfaceVer10.java
@@ -0,0 +1,396 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnInterfaceVer10 implements OFBsnInterface {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnInterfaceVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 32;
+
+        private final static MacAddress DEFAULT_HW_ADDR = MacAddress.NONE;
+        private final static String DEFAULT_NAME = "";
+        private final static IPv4Address DEFAULT_IPV4_ADDR = IPv4Address.NONE;
+        private final static IPv4Address DEFAULT_IPV4_NETMASK = IPv4Address.NONE;
+
+    // OF message fields
+    private final MacAddress hwAddr;
+    private final String name;
+    private final IPv4Address ipv4Addr;
+    private final IPv4Address ipv4Netmask;
+//
+    // Immutable default instance
+    final static OFBsnInterfaceVer10 DEFAULT = new OFBsnInterfaceVer10(
+        DEFAULT_HW_ADDR, DEFAULT_NAME, DEFAULT_IPV4_ADDR, DEFAULT_IPV4_NETMASK
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnInterfaceVer10(MacAddress hwAddr, String name, IPv4Address ipv4Addr, IPv4Address ipv4Netmask) {
+        this.hwAddr = hwAddr;
+        this.name = name;
+        this.ipv4Addr = ipv4Addr;
+        this.ipv4Netmask = ipv4Netmask;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public MacAddress getHwAddr() {
+        return hwAddr;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public IPv4Address getIpv4Addr() {
+        return ipv4Addr;
+    }
+
+    @Override
+    public IPv4Address getIpv4Netmask() {
+        return ipv4Netmask;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    public OFBsnInterface.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnInterface.Builder {
+        final OFBsnInterfaceVer10 parentMessage;
+
+        // OF message fields
+        private boolean hwAddrSet;
+        private MacAddress hwAddr;
+        private boolean nameSet;
+        private String name;
+        private boolean ipv4AddrSet;
+        private IPv4Address ipv4Addr;
+        private boolean ipv4NetmaskSet;
+        private IPv4Address ipv4Netmask;
+
+        BuilderWithParent(OFBsnInterfaceVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public MacAddress getHwAddr() {
+        return hwAddr;
+    }
+
+    @Override
+    public OFBsnInterface.Builder setHwAddr(MacAddress hwAddr) {
+        this.hwAddr = hwAddr;
+        this.hwAddrSet = true;
+        return this;
+    }
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public OFBsnInterface.Builder setName(String name) {
+        this.name = name;
+        this.nameSet = true;
+        return this;
+    }
+    @Override
+    public IPv4Address getIpv4Addr() {
+        return ipv4Addr;
+    }
+
+    @Override
+    public OFBsnInterface.Builder setIpv4Addr(IPv4Address ipv4Addr) {
+        this.ipv4Addr = ipv4Addr;
+        this.ipv4AddrSet = true;
+        return this;
+    }
+    @Override
+    public IPv4Address getIpv4Netmask() {
+        return ipv4Netmask;
+    }
+
+    @Override
+    public OFBsnInterface.Builder setIpv4Netmask(IPv4Address ipv4Netmask) {
+        this.ipv4Netmask = ipv4Netmask;
+        this.ipv4NetmaskSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+        @Override
+        public OFBsnInterface build() {
+                MacAddress hwAddr = this.hwAddrSet ? this.hwAddr : parentMessage.hwAddr;
+                if(hwAddr == null)
+                    throw new NullPointerException("Property hwAddr must not be null");
+                String name = this.nameSet ? this.name : parentMessage.name;
+                if(name == null)
+                    throw new NullPointerException("Property name must not be null");
+                IPv4Address ipv4Addr = this.ipv4AddrSet ? this.ipv4Addr : parentMessage.ipv4Addr;
+                if(ipv4Addr == null)
+                    throw new NullPointerException("Property ipv4Addr must not be null");
+                IPv4Address ipv4Netmask = this.ipv4NetmaskSet ? this.ipv4Netmask : parentMessage.ipv4Netmask;
+                if(ipv4Netmask == null)
+                    throw new NullPointerException("Property ipv4Netmask must not be null");
+
+                //
+                return new OFBsnInterfaceVer10(
+                    hwAddr,
+                    name,
+                    ipv4Addr,
+                    ipv4Netmask
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnInterface.Builder {
+        // OF message fields
+        private boolean hwAddrSet;
+        private MacAddress hwAddr;
+        private boolean nameSet;
+        private String name;
+        private boolean ipv4AddrSet;
+        private IPv4Address ipv4Addr;
+        private boolean ipv4NetmaskSet;
+        private IPv4Address ipv4Netmask;
+
+    @Override
+    public MacAddress getHwAddr() {
+        return hwAddr;
+    }
+
+    @Override
+    public OFBsnInterface.Builder setHwAddr(MacAddress hwAddr) {
+        this.hwAddr = hwAddr;
+        this.hwAddrSet = true;
+        return this;
+    }
+    @Override
+    public String getName() {
+        return name;
+    }
+
+    @Override
+    public OFBsnInterface.Builder setName(String name) {
+        this.name = name;
+        this.nameSet = true;
+        return this;
+    }
+    @Override
+    public IPv4Address getIpv4Addr() {
+        return ipv4Addr;
+    }
+
+    @Override
+    public OFBsnInterface.Builder setIpv4Addr(IPv4Address ipv4Addr) {
+        this.ipv4Addr = ipv4Addr;
+        this.ipv4AddrSet = true;
+        return this;
+    }
+    @Override
+    public IPv4Address getIpv4Netmask() {
+        return ipv4Netmask;
+    }
+
+    @Override
+    public OFBsnInterface.Builder setIpv4Netmask(IPv4Address ipv4Netmask) {
+        this.ipv4Netmask = ipv4Netmask;
+        this.ipv4NetmaskSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+//
+        @Override
+        public OFBsnInterface build() {
+            MacAddress hwAddr = this.hwAddrSet ? this.hwAddr : DEFAULT_HW_ADDR;
+            if(hwAddr == null)
+                throw new NullPointerException("Property hwAddr must not be null");
+            String name = this.nameSet ? this.name : DEFAULT_NAME;
+            if(name == null)
+                throw new NullPointerException("Property name must not be null");
+            IPv4Address ipv4Addr = this.ipv4AddrSet ? this.ipv4Addr : DEFAULT_IPV4_ADDR;
+            if(ipv4Addr == null)
+                throw new NullPointerException("Property ipv4Addr must not be null");
+            IPv4Address ipv4Netmask = this.ipv4NetmaskSet ? this.ipv4Netmask : DEFAULT_IPV4_NETMASK;
+            if(ipv4Netmask == null)
+                throw new NullPointerException("Property ipv4Netmask must not be null");
+
+
+            return new OFBsnInterfaceVer10(
+                    hwAddr,
+                    name,
+                    ipv4Addr,
+                    ipv4Netmask
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnInterface> {
+        @Override
+        public OFBsnInterface readFrom(ChannelBuffer bb) throws OFParseError {
+            MacAddress hwAddr = MacAddress.read6Bytes(bb);
+            // pad: 2 bytes
+            bb.skipBytes(2);
+            String name = ChannelUtils.readFixedLengthString(bb, 16);
+            IPv4Address ipv4Addr = IPv4Address.read4Bytes(bb);
+            IPv4Address ipv4Netmask = IPv4Address.read4Bytes(bb);
+
+            OFBsnInterfaceVer10 bsnInterfaceVer10 = new OFBsnInterfaceVer10(
+                    hwAddr,
+                      name,
+                      ipv4Addr,
+                      ipv4Netmask
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnInterfaceVer10);
+            return bsnInterfaceVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnInterfaceVer10Funnel FUNNEL = new OFBsnInterfaceVer10Funnel();
+    static class OFBsnInterfaceVer10Funnel implements Funnel<OFBsnInterfaceVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnInterfaceVer10 message, PrimitiveSink sink) {
+            message.hwAddr.putTo(sink);
+            // skip pad (2 bytes)
+            sink.putUnencodedChars(message.name);
+            message.ipv4Addr.putTo(sink);
+            message.ipv4Netmask.putTo(sink);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnInterfaceVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnInterfaceVer10 message) {
+            message.hwAddr.write6Bytes(bb);
+            // pad: 2 bytes
+            bb.writeZero(2);
+            ChannelUtils.writeFixedLengthString(bb, message.name, 16);
+            message.ipv4Addr.write4Bytes(bb);
+            message.ipv4Netmask.write4Bytes(bb);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnInterfaceVer10(");
+        b.append("hwAddr=").append(hwAddr);
+        b.append(", ");
+        b.append("name=").append(name);
+        b.append(", ");
+        b.append("ipv4Addr=").append(ipv4Addr);
+        b.append(", ");
+        b.append("ipv4Netmask=").append(ipv4Netmask);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnInterfaceVer10 other = (OFBsnInterfaceVer10) obj;
+
+        if (hwAddr == null) {
+            if (other.hwAddr != null)
+                return false;
+        } else if (!hwAddr.equals(other.hwAddr))
+            return false;
+        if (name == null) {
+            if (other.name != null)
+                return false;
+        } else if (!name.equals(other.name))
+            return false;
+        if (ipv4Addr == null) {
+            if (other.ipv4Addr != null)
+                return false;
+        } else if (!ipv4Addr.equals(other.ipv4Addr))
+            return false;
+        if (ipv4Netmask == null) {
+            if (other.ipv4Netmask != null)
+                return false;
+        } else if (!ipv4Netmask.equals(other.ipv4Netmask))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime * result + ((hwAddr == null) ? 0 : hwAddr.hashCode());
+        result = prime * result + ((name == null) ? 0 : name.hashCode());
+        result = prime * result + ((ipv4Addr == null) ? 0 : ipv4Addr.hashCode());
+        result = prime * result + ((ipv4Netmask == null) ? 0 : ipv4Netmask.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduRxReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduRxReplyVer10.java
new file mode 100644
index 0000000..9d16d85
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduRxReplyVer10.java
@@ -0,0 +1,462 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnPduRxReplyVer10 implements OFBsnPduRxReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnPduRxReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 23;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static long DEFAULT_STATUS = 0x0L;
+        private final static OFPort DEFAULT_PORT_NO = OFPort.ANY;
+        private final static short DEFAULT_SLOT_NUM = (short) 0x0;
+
+    // OF message fields
+    private final long xid;
+    private final long status;
+    private final OFPort portNo;
+    private final short slotNum;
+//
+    // Immutable default instance
+    final static OFBsnPduRxReplyVer10 DEFAULT = new OFBsnPduRxReplyVer10(
+        DEFAULT_XID, DEFAULT_STATUS, DEFAULT_PORT_NO, DEFAULT_SLOT_NUM
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnPduRxReplyVer10(long xid, long status, OFPort portNo, short slotNum) {
+        this.xid = xid;
+        this.status = status;
+        this.portNo = portNo;
+        this.slotNum = slotNum;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x22L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public short getSlotNum() {
+        return slotNum;
+    }
+
+
+
+    public OFBsnPduRxReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnPduRxReply.Builder {
+        final OFBsnPduRxReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean statusSet;
+        private long status;
+        private boolean portNoSet;
+        private OFPort portNo;
+        private boolean slotNumSet;
+        private short slotNum;
+
+        BuilderWithParent(OFBsnPduRxReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnPduRxReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x22L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnPduRxReply.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public OFBsnPduRxReply.Builder setPortNo(OFPort portNo) {
+        this.portNo = portNo;
+        this.portNoSet = true;
+        return this;
+    }
+    @Override
+    public short getSlotNum() {
+        return slotNum;
+    }
+
+    @Override
+    public OFBsnPduRxReply.Builder setSlotNum(short slotNum) {
+        this.slotNum = slotNum;
+        this.slotNumSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnPduRxReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                long status = this.statusSet ? this.status : parentMessage.status;
+                OFPort portNo = this.portNoSet ? this.portNo : parentMessage.portNo;
+                if(portNo == null)
+                    throw new NullPointerException("Property portNo must not be null");
+                short slotNum = this.slotNumSet ? this.slotNum : parentMessage.slotNum;
+
+                //
+                return new OFBsnPduRxReplyVer10(
+                    xid,
+                    status,
+                    portNo,
+                    slotNum
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnPduRxReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean statusSet;
+        private long status;
+        private boolean portNoSet;
+        private OFPort portNo;
+        private boolean slotNumSet;
+        private short slotNum;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnPduRxReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x22L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnPduRxReply.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public OFBsnPduRxReply.Builder setPortNo(OFPort portNo) {
+        this.portNo = portNo;
+        this.portNoSet = true;
+        return this;
+    }
+    @Override
+    public short getSlotNum() {
+        return slotNum;
+    }
+
+    @Override
+    public OFBsnPduRxReply.Builder setSlotNum(short slotNum) {
+        this.slotNum = slotNum;
+        this.slotNumSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnPduRxReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            long status = this.statusSet ? this.status : DEFAULT_STATUS;
+            OFPort portNo = this.portNoSet ? this.portNo : DEFAULT_PORT_NO;
+            if(portNo == null)
+                throw new NullPointerException("Property portNo must not be null");
+            short slotNum = this.slotNumSet ? this.slotNum : DEFAULT_SLOT_NUM;
+
+
+            return new OFBsnPduRxReplyVer10(
+                    xid,
+                    status,
+                    portNo,
+                    slotNum
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnPduRxReply> {
+        @Override
+        public OFBsnPduRxReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 23)
+                throw new OFParseError("Wrong length: Expected=23(23), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x22L
+            int subtype = bb.readInt();
+            if(subtype != 0x22)
+                throw new OFParseError("Wrong subtype: Expected=0x22L(0x22L), got="+subtype);
+            long status = U32.f(bb.readInt());
+            OFPort portNo = OFPort.read2Bytes(bb);
+            short slotNum = U8.f(bb.readByte());
+
+            OFBsnPduRxReplyVer10 bsnPduRxReplyVer10 = new OFBsnPduRxReplyVer10(
+                    xid,
+                      status,
+                      portNo,
+                      slotNum
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnPduRxReplyVer10);
+            return bsnPduRxReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnPduRxReplyVer10Funnel FUNNEL = new OFBsnPduRxReplyVer10Funnel();
+    static class OFBsnPduRxReplyVer10Funnel implements Funnel<OFBsnPduRxReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnPduRxReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 23
+            sink.putShort((short) 0x17);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x22L
+            sink.putInt(0x22);
+            sink.putLong(message.status);
+            message.portNo.putTo(sink);
+            sink.putShort(message.slotNum);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnPduRxReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnPduRxReplyVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 23
+            bb.writeShort((short) 0x17);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x22L
+            bb.writeInt(0x22);
+            bb.writeInt(U32.t(message.status));
+            message.portNo.write2Bytes(bb);
+            bb.writeByte(U8.t(message.slotNum));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnPduRxReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("status=").append(status);
+        b.append(", ");
+        b.append("portNo=").append(portNo);
+        b.append(", ");
+        b.append("slotNum=").append(slotNum);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnPduRxReplyVer10 other = (OFBsnPduRxReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( status != other.status)
+            return false;
+        if (portNo == null) {
+            if (other.portNo != null)
+                return false;
+        } else if (!portNo.equals(other.portNo))
+            return false;
+        if( slotNum != other.slotNum)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime *  (int) (status ^ (status >>> 32));
+        result = prime * result + ((portNo == null) ? 0 : portNo.hashCode());
+        result = prime * result + slotNum;
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduRxRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduRxRequestVer10.java
new file mode 100644
index 0000000..5f6a942
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduRxRequestVer10.java
@@ -0,0 +1,524 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+import java.util.Arrays;
+
+class OFBsnPduRxRequestVer10 implements OFBsnPduRxRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnPduRxRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 26;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static long DEFAULT_TIMEOUT_MS = 0x0L;
+        private final static OFPort DEFAULT_PORT_NO = OFPort.ANY;
+        private final static short DEFAULT_SLOT_NUM = (short) 0x0;
+        private final static byte[] DEFAULT_DATA = new byte[0];
+
+    // OF message fields
+    private final long xid;
+    private final long timeoutMs;
+    private final OFPort portNo;
+    private final short slotNum;
+    private final byte[] data;
+//
+    // Immutable default instance
+    final static OFBsnPduRxRequestVer10 DEFAULT = new OFBsnPduRxRequestVer10(
+        DEFAULT_XID, DEFAULT_TIMEOUT_MS, DEFAULT_PORT_NO, DEFAULT_SLOT_NUM, DEFAULT_DATA
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnPduRxRequestVer10(long xid, long timeoutMs, OFPort portNo, short slotNum, byte[] data) {
+        this.xid = xid;
+        this.timeoutMs = timeoutMs;
+        this.portNo = portNo;
+        this.slotNum = slotNum;
+        this.data = data;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x21L;
+    }
+
+    @Override
+    public long getTimeoutMs() {
+        return timeoutMs;
+    }
+
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public short getSlotNum() {
+        return slotNum;
+    }
+
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+
+
+    public OFBsnPduRxRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnPduRxRequest.Builder {
+        final OFBsnPduRxRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean timeoutMsSet;
+        private long timeoutMs;
+        private boolean portNoSet;
+        private OFPort portNo;
+        private boolean slotNumSet;
+        private short slotNum;
+        private boolean dataSet;
+        private byte[] data;
+
+        BuilderWithParent(OFBsnPduRxRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnPduRxRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x21L;
+    }
+
+    @Override
+    public long getTimeoutMs() {
+        return timeoutMs;
+    }
+
+    @Override
+    public OFBsnPduRxRequest.Builder setTimeoutMs(long timeoutMs) {
+        this.timeoutMs = timeoutMs;
+        this.timeoutMsSet = true;
+        return this;
+    }
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public OFBsnPduRxRequest.Builder setPortNo(OFPort portNo) {
+        this.portNo = portNo;
+        this.portNoSet = true;
+        return this;
+    }
+    @Override
+    public short getSlotNum() {
+        return slotNum;
+    }
+
+    @Override
+    public OFBsnPduRxRequest.Builder setSlotNum(short slotNum) {
+        this.slotNum = slotNum;
+        this.slotNumSet = true;
+        return this;
+    }
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+    @Override
+    public OFBsnPduRxRequest.Builder setData(byte[] data) {
+        this.data = data;
+        this.dataSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnPduRxRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                long timeoutMs = this.timeoutMsSet ? this.timeoutMs : parentMessage.timeoutMs;
+                OFPort portNo = this.portNoSet ? this.portNo : parentMessage.portNo;
+                if(portNo == null)
+                    throw new NullPointerException("Property portNo must not be null");
+                short slotNum = this.slotNumSet ? this.slotNum : parentMessage.slotNum;
+                byte[] data = this.dataSet ? this.data : parentMessage.data;
+                if(data == null)
+                    throw new NullPointerException("Property data must not be null");
+
+                //
+                return new OFBsnPduRxRequestVer10(
+                    xid,
+                    timeoutMs,
+                    portNo,
+                    slotNum,
+                    data
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnPduRxRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean timeoutMsSet;
+        private long timeoutMs;
+        private boolean portNoSet;
+        private OFPort portNo;
+        private boolean slotNumSet;
+        private short slotNum;
+        private boolean dataSet;
+        private byte[] data;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnPduRxRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x21L;
+    }
+
+    @Override
+    public long getTimeoutMs() {
+        return timeoutMs;
+    }
+
+    @Override
+    public OFBsnPduRxRequest.Builder setTimeoutMs(long timeoutMs) {
+        this.timeoutMs = timeoutMs;
+        this.timeoutMsSet = true;
+        return this;
+    }
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public OFBsnPduRxRequest.Builder setPortNo(OFPort portNo) {
+        this.portNo = portNo;
+        this.portNoSet = true;
+        return this;
+    }
+    @Override
+    public short getSlotNum() {
+        return slotNum;
+    }
+
+    @Override
+    public OFBsnPduRxRequest.Builder setSlotNum(short slotNum) {
+        this.slotNum = slotNum;
+        this.slotNumSet = true;
+        return this;
+    }
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+    @Override
+    public OFBsnPduRxRequest.Builder setData(byte[] data) {
+        this.data = data;
+        this.dataSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnPduRxRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            long timeoutMs = this.timeoutMsSet ? this.timeoutMs : DEFAULT_TIMEOUT_MS;
+            OFPort portNo = this.portNoSet ? this.portNo : DEFAULT_PORT_NO;
+            if(portNo == null)
+                throw new NullPointerException("Property portNo must not be null");
+            short slotNum = this.slotNumSet ? this.slotNum : DEFAULT_SLOT_NUM;
+            byte[] data = this.dataSet ? this.data : DEFAULT_DATA;
+            if(data == null)
+                throw new NullPointerException("Property data must not be null");
+
+
+            return new OFBsnPduRxRequestVer10(
+                    xid,
+                    timeoutMs,
+                    portNo,
+                    slotNum,
+                    data
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnPduRxRequest> {
+        @Override
+        public OFBsnPduRxRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x21L
+            int subtype = bb.readInt();
+            if(subtype != 0x21)
+                throw new OFParseError("Wrong subtype: Expected=0x21L(0x21L), got="+subtype);
+            long timeoutMs = U32.f(bb.readInt());
+            OFPort portNo = OFPort.read2Bytes(bb);
+            short slotNum = U8.f(bb.readByte());
+            // pad: 3 bytes
+            bb.skipBytes(3);
+            byte[] data = ChannelUtils.readBytes(bb, length - (bb.readerIndex() - start));
+
+            OFBsnPduRxRequestVer10 bsnPduRxRequestVer10 = new OFBsnPduRxRequestVer10(
+                    xid,
+                      timeoutMs,
+                      portNo,
+                      slotNum,
+                      data
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnPduRxRequestVer10);
+            return bsnPduRxRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnPduRxRequestVer10Funnel FUNNEL = new OFBsnPduRxRequestVer10Funnel();
+    static class OFBsnPduRxRequestVer10Funnel implements Funnel<OFBsnPduRxRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnPduRxRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // FIXME: skip funnel of length
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x21L
+            sink.putInt(0x21);
+            sink.putLong(message.timeoutMs);
+            message.portNo.putTo(sink);
+            sink.putShort(message.slotNum);
+            // skip pad (3 bytes)
+            sink.putBytes(message.data);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnPduRxRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnPduRxRequestVer10 message) {
+            int startIndex = bb.writerIndex();
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // length is length of variable message, will be updated at the end
+            int lengthIndex = bb.writerIndex();
+            bb.writeShort(U16.t(0));
+
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x21L
+            bb.writeInt(0x21);
+            bb.writeInt(U32.t(message.timeoutMs));
+            message.portNo.write2Bytes(bb);
+            bb.writeByte(U8.t(message.slotNum));
+            // pad: 3 bytes
+            bb.writeZero(3);
+            bb.writeBytes(message.data);
+
+            // update length field
+            int length = bb.writerIndex() - startIndex;
+            bb.setShort(lengthIndex, length);
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnPduRxRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("timeoutMs=").append(timeoutMs);
+        b.append(", ");
+        b.append("portNo=").append(portNo);
+        b.append(", ");
+        b.append("slotNum=").append(slotNum);
+        b.append(", ");
+        b.append("data=").append(Arrays.toString(data));
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnPduRxRequestVer10 other = (OFBsnPduRxRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( timeoutMs != other.timeoutMs)
+            return false;
+        if (portNo == null) {
+            if (other.portNo != null)
+                return false;
+        } else if (!portNo.equals(other.portNo))
+            return false;
+        if( slotNum != other.slotNum)
+            return false;
+        if (!Arrays.equals(data, other.data))
+                return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime *  (int) (timeoutMs ^ (timeoutMs >>> 32));
+        result = prime * result + ((portNo == null) ? 0 : portNo.hashCode());
+        result = prime * result + slotNum;
+        result = prime * result + Arrays.hashCode(data);
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduRxTimeoutVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduRxTimeoutVer10.java
new file mode 100644
index 0000000..129b62a
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduRxTimeoutVer10.java
@@ -0,0 +1,415 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnPduRxTimeoutVer10 implements OFBsnPduRxTimeout {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnPduRxTimeoutVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 19;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static OFPort DEFAULT_PORT_NO = OFPort.ANY;
+        private final static short DEFAULT_SLOT_NUM = (short) 0x0;
+
+    // OF message fields
+    private final long xid;
+    private final OFPort portNo;
+    private final short slotNum;
+//
+    // Immutable default instance
+    final static OFBsnPduRxTimeoutVer10 DEFAULT = new OFBsnPduRxTimeoutVer10(
+        DEFAULT_XID, DEFAULT_PORT_NO, DEFAULT_SLOT_NUM
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnPduRxTimeoutVer10(long xid, OFPort portNo, short slotNum) {
+        this.xid = xid;
+        this.portNo = portNo;
+        this.slotNum = slotNum;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x23L;
+    }
+
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public short getSlotNum() {
+        return slotNum;
+    }
+
+
+
+    public OFBsnPduRxTimeout.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnPduRxTimeout.Builder {
+        final OFBsnPduRxTimeoutVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean portNoSet;
+        private OFPort portNo;
+        private boolean slotNumSet;
+        private short slotNum;
+
+        BuilderWithParent(OFBsnPduRxTimeoutVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnPduRxTimeout.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x23L;
+    }
+
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public OFBsnPduRxTimeout.Builder setPortNo(OFPort portNo) {
+        this.portNo = portNo;
+        this.portNoSet = true;
+        return this;
+    }
+    @Override
+    public short getSlotNum() {
+        return slotNum;
+    }
+
+    @Override
+    public OFBsnPduRxTimeout.Builder setSlotNum(short slotNum) {
+        this.slotNum = slotNum;
+        this.slotNumSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnPduRxTimeout build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                OFPort portNo = this.portNoSet ? this.portNo : parentMessage.portNo;
+                if(portNo == null)
+                    throw new NullPointerException("Property portNo must not be null");
+                short slotNum = this.slotNumSet ? this.slotNum : parentMessage.slotNum;
+
+                //
+                return new OFBsnPduRxTimeoutVer10(
+                    xid,
+                    portNo,
+                    slotNum
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnPduRxTimeout.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean portNoSet;
+        private OFPort portNo;
+        private boolean slotNumSet;
+        private short slotNum;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnPduRxTimeout.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x23L;
+    }
+
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public OFBsnPduRxTimeout.Builder setPortNo(OFPort portNo) {
+        this.portNo = portNo;
+        this.portNoSet = true;
+        return this;
+    }
+    @Override
+    public short getSlotNum() {
+        return slotNum;
+    }
+
+    @Override
+    public OFBsnPduRxTimeout.Builder setSlotNum(short slotNum) {
+        this.slotNum = slotNum;
+        this.slotNumSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnPduRxTimeout build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            OFPort portNo = this.portNoSet ? this.portNo : DEFAULT_PORT_NO;
+            if(portNo == null)
+                throw new NullPointerException("Property portNo must not be null");
+            short slotNum = this.slotNumSet ? this.slotNum : DEFAULT_SLOT_NUM;
+
+
+            return new OFBsnPduRxTimeoutVer10(
+                    xid,
+                    portNo,
+                    slotNum
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnPduRxTimeout> {
+        @Override
+        public OFBsnPduRxTimeout readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 19)
+                throw new OFParseError("Wrong length: Expected=19(19), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x23L
+            int subtype = bb.readInt();
+            if(subtype != 0x23)
+                throw new OFParseError("Wrong subtype: Expected=0x23L(0x23L), got="+subtype);
+            OFPort portNo = OFPort.read2Bytes(bb);
+            short slotNum = U8.f(bb.readByte());
+
+            OFBsnPduRxTimeoutVer10 bsnPduRxTimeoutVer10 = new OFBsnPduRxTimeoutVer10(
+                    xid,
+                      portNo,
+                      slotNum
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnPduRxTimeoutVer10);
+            return bsnPduRxTimeoutVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnPduRxTimeoutVer10Funnel FUNNEL = new OFBsnPduRxTimeoutVer10Funnel();
+    static class OFBsnPduRxTimeoutVer10Funnel implements Funnel<OFBsnPduRxTimeoutVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnPduRxTimeoutVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 19
+            sink.putShort((short) 0x13);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x23L
+            sink.putInt(0x23);
+            message.portNo.putTo(sink);
+            sink.putShort(message.slotNum);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnPduRxTimeoutVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnPduRxTimeoutVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 19
+            bb.writeShort((short) 0x13);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x23L
+            bb.writeInt(0x23);
+            message.portNo.write2Bytes(bb);
+            bb.writeByte(U8.t(message.slotNum));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnPduRxTimeoutVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("portNo=").append(portNo);
+        b.append(", ");
+        b.append("slotNum=").append(slotNum);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnPduRxTimeoutVer10 other = (OFBsnPduRxTimeoutVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if (portNo == null) {
+            if (other.portNo != null)
+                return false;
+        } else if (!portNo.equals(other.portNo))
+            return false;
+        if( slotNum != other.slotNum)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + ((portNo == null) ? 0 : portNo.hashCode());
+        result = prime * result + slotNum;
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduSlotNumTSerializerVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduSlotNumTSerializerVer10.java
new file mode 100644
index 0000000..3faf113
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduSlotNumTSerializerVer10.java
@@ -0,0 +1,69 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const_serializer.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.projectfloodlight.openflow.protocol.OFBsnPduSlotNumT;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+
+public class OFBsnPduSlotNumTSerializerVer10 {
+
+    public final static byte PDU_SLOT_NUM_ANY_VAL = (byte) 0xff;
+
+    public static OFBsnPduSlotNumT readFrom(ChannelBuffer bb) throws OFParseError {
+        try {
+            return ofWireValue(bb.readByte());
+        } catch (IllegalArgumentException e) {
+            throw new OFParseError(e);
+        }
+    }
+
+    public static void writeTo(ChannelBuffer bb, OFBsnPduSlotNumT e) {
+        bb.writeByte(toWireValue(e));
+    }
+
+    public static void putTo(OFBsnPduSlotNumT e, PrimitiveSink sink) {
+        sink.putByte(toWireValue(e));
+    }
+
+    public static OFBsnPduSlotNumT ofWireValue(byte val) {
+        switch(val) {
+            case PDU_SLOT_NUM_ANY_VAL:
+                return OFBsnPduSlotNumT.PDU_SLOT_NUM_ANY;
+            default:
+                throw new IllegalArgumentException("Illegal wire value for type OFBsnPduSlotNumT in version 1.0: " + val);
+        }
+    }
+
+
+    public static byte toWireValue(OFBsnPduSlotNumT e) {
+        switch(e) {
+            case PDU_SLOT_NUM_ANY:
+                return PDU_SLOT_NUM_ANY_VAL;
+            default:
+                throw new IllegalArgumentException("Illegal enum value for type OFBsnPduSlotNumT in version 1.0: " + e);
+        }
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduTxReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduTxReplyVer10.java
new file mode 100644
index 0000000..5bbf0da
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduTxReplyVer10.java
@@ -0,0 +1,462 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnPduTxReplyVer10 implements OFBsnPduTxReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnPduTxReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 23;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static long DEFAULT_STATUS = 0x0L;
+        private final static OFPort DEFAULT_PORT_NO = OFPort.ANY;
+        private final static short DEFAULT_SLOT_NUM = (short) 0x0;
+
+    // OF message fields
+    private final long xid;
+    private final long status;
+    private final OFPort portNo;
+    private final short slotNum;
+//
+    // Immutable default instance
+    final static OFBsnPduTxReplyVer10 DEFAULT = new OFBsnPduTxReplyVer10(
+        DEFAULT_XID, DEFAULT_STATUS, DEFAULT_PORT_NO, DEFAULT_SLOT_NUM
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnPduTxReplyVer10(long xid, long status, OFPort portNo, short slotNum) {
+        this.xid = xid;
+        this.status = status;
+        this.portNo = portNo;
+        this.slotNum = slotNum;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x20L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public short getSlotNum() {
+        return slotNum;
+    }
+
+
+
+    public OFBsnPduTxReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnPduTxReply.Builder {
+        final OFBsnPduTxReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean statusSet;
+        private long status;
+        private boolean portNoSet;
+        private OFPort portNo;
+        private boolean slotNumSet;
+        private short slotNum;
+
+        BuilderWithParent(OFBsnPduTxReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnPduTxReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x20L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnPduTxReply.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public OFBsnPduTxReply.Builder setPortNo(OFPort portNo) {
+        this.portNo = portNo;
+        this.portNoSet = true;
+        return this;
+    }
+    @Override
+    public short getSlotNum() {
+        return slotNum;
+    }
+
+    @Override
+    public OFBsnPduTxReply.Builder setSlotNum(short slotNum) {
+        this.slotNum = slotNum;
+        this.slotNumSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnPduTxReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                long status = this.statusSet ? this.status : parentMessage.status;
+                OFPort portNo = this.portNoSet ? this.portNo : parentMessage.portNo;
+                if(portNo == null)
+                    throw new NullPointerException("Property portNo must not be null");
+                short slotNum = this.slotNumSet ? this.slotNum : parentMessage.slotNum;
+
+                //
+                return new OFBsnPduTxReplyVer10(
+                    xid,
+                    status,
+                    portNo,
+                    slotNum
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnPduTxReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean statusSet;
+        private long status;
+        private boolean portNoSet;
+        private OFPort portNo;
+        private boolean slotNumSet;
+        private short slotNum;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnPduTxReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x20L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnPduTxReply.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public OFBsnPduTxReply.Builder setPortNo(OFPort portNo) {
+        this.portNo = portNo;
+        this.portNoSet = true;
+        return this;
+    }
+    @Override
+    public short getSlotNum() {
+        return slotNum;
+    }
+
+    @Override
+    public OFBsnPduTxReply.Builder setSlotNum(short slotNum) {
+        this.slotNum = slotNum;
+        this.slotNumSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnPduTxReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            long status = this.statusSet ? this.status : DEFAULT_STATUS;
+            OFPort portNo = this.portNoSet ? this.portNo : DEFAULT_PORT_NO;
+            if(portNo == null)
+                throw new NullPointerException("Property portNo must not be null");
+            short slotNum = this.slotNumSet ? this.slotNum : DEFAULT_SLOT_NUM;
+
+
+            return new OFBsnPduTxReplyVer10(
+                    xid,
+                    status,
+                    portNo,
+                    slotNum
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnPduTxReply> {
+        @Override
+        public OFBsnPduTxReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 23)
+                throw new OFParseError("Wrong length: Expected=23(23), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x20L
+            int subtype = bb.readInt();
+            if(subtype != 0x20)
+                throw new OFParseError("Wrong subtype: Expected=0x20L(0x20L), got="+subtype);
+            long status = U32.f(bb.readInt());
+            OFPort portNo = OFPort.read2Bytes(bb);
+            short slotNum = U8.f(bb.readByte());
+
+            OFBsnPduTxReplyVer10 bsnPduTxReplyVer10 = new OFBsnPduTxReplyVer10(
+                    xid,
+                      status,
+                      portNo,
+                      slotNum
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnPduTxReplyVer10);
+            return bsnPduTxReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnPduTxReplyVer10Funnel FUNNEL = new OFBsnPduTxReplyVer10Funnel();
+    static class OFBsnPduTxReplyVer10Funnel implements Funnel<OFBsnPduTxReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnPduTxReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 23
+            sink.putShort((short) 0x17);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x20L
+            sink.putInt(0x20);
+            sink.putLong(message.status);
+            message.portNo.putTo(sink);
+            sink.putShort(message.slotNum);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnPduTxReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnPduTxReplyVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 23
+            bb.writeShort((short) 0x17);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x20L
+            bb.writeInt(0x20);
+            bb.writeInt(U32.t(message.status));
+            message.portNo.write2Bytes(bb);
+            bb.writeByte(U8.t(message.slotNum));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnPduTxReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("status=").append(status);
+        b.append(", ");
+        b.append("portNo=").append(portNo);
+        b.append(", ");
+        b.append("slotNum=").append(slotNum);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnPduTxReplyVer10 other = (OFBsnPduTxReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( status != other.status)
+            return false;
+        if (portNo == null) {
+            if (other.portNo != null)
+                return false;
+        } else if (!portNo.equals(other.portNo))
+            return false;
+        if( slotNum != other.slotNum)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime *  (int) (status ^ (status >>> 32));
+        result = prime * result + ((portNo == null) ? 0 : portNo.hashCode());
+        result = prime * result + slotNum;
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduTxRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduTxRequestVer10.java
new file mode 100644
index 0000000..2f85edb
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnPduTxRequestVer10.java
@@ -0,0 +1,524 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+import java.util.Arrays;
+
+class OFBsnPduTxRequestVer10 implements OFBsnPduTxRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnPduTxRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 26;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static long DEFAULT_TX_INTERVAL_MS = 0x0L;
+        private final static OFPort DEFAULT_PORT_NO = OFPort.ANY;
+        private final static short DEFAULT_SLOT_NUM = (short) 0x0;
+        private final static byte[] DEFAULT_DATA = new byte[0];
+
+    // OF message fields
+    private final long xid;
+    private final long txIntervalMs;
+    private final OFPort portNo;
+    private final short slotNum;
+    private final byte[] data;
+//
+    // Immutable default instance
+    final static OFBsnPduTxRequestVer10 DEFAULT = new OFBsnPduTxRequestVer10(
+        DEFAULT_XID, DEFAULT_TX_INTERVAL_MS, DEFAULT_PORT_NO, DEFAULT_SLOT_NUM, DEFAULT_DATA
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnPduTxRequestVer10(long xid, long txIntervalMs, OFPort portNo, short slotNum, byte[] data) {
+        this.xid = xid;
+        this.txIntervalMs = txIntervalMs;
+        this.portNo = portNo;
+        this.slotNum = slotNum;
+        this.data = data;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1fL;
+    }
+
+    @Override
+    public long getTxIntervalMs() {
+        return txIntervalMs;
+    }
+
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public short getSlotNum() {
+        return slotNum;
+    }
+
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+
+
+    public OFBsnPduTxRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnPduTxRequest.Builder {
+        final OFBsnPduTxRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean txIntervalMsSet;
+        private long txIntervalMs;
+        private boolean portNoSet;
+        private OFPort portNo;
+        private boolean slotNumSet;
+        private short slotNum;
+        private boolean dataSet;
+        private byte[] data;
+
+        BuilderWithParent(OFBsnPduTxRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnPduTxRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1fL;
+    }
+
+    @Override
+    public long getTxIntervalMs() {
+        return txIntervalMs;
+    }
+
+    @Override
+    public OFBsnPduTxRequest.Builder setTxIntervalMs(long txIntervalMs) {
+        this.txIntervalMs = txIntervalMs;
+        this.txIntervalMsSet = true;
+        return this;
+    }
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public OFBsnPduTxRequest.Builder setPortNo(OFPort portNo) {
+        this.portNo = portNo;
+        this.portNoSet = true;
+        return this;
+    }
+    @Override
+    public short getSlotNum() {
+        return slotNum;
+    }
+
+    @Override
+    public OFBsnPduTxRequest.Builder setSlotNum(short slotNum) {
+        this.slotNum = slotNum;
+        this.slotNumSet = true;
+        return this;
+    }
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+    @Override
+    public OFBsnPduTxRequest.Builder setData(byte[] data) {
+        this.data = data;
+        this.dataSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnPduTxRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                long txIntervalMs = this.txIntervalMsSet ? this.txIntervalMs : parentMessage.txIntervalMs;
+                OFPort portNo = this.portNoSet ? this.portNo : parentMessage.portNo;
+                if(portNo == null)
+                    throw new NullPointerException("Property portNo must not be null");
+                short slotNum = this.slotNumSet ? this.slotNum : parentMessage.slotNum;
+                byte[] data = this.dataSet ? this.data : parentMessage.data;
+                if(data == null)
+                    throw new NullPointerException("Property data must not be null");
+
+                //
+                return new OFBsnPduTxRequestVer10(
+                    xid,
+                    txIntervalMs,
+                    portNo,
+                    slotNum,
+                    data
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnPduTxRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean txIntervalMsSet;
+        private long txIntervalMs;
+        private boolean portNoSet;
+        private OFPort portNo;
+        private boolean slotNumSet;
+        private short slotNum;
+        private boolean dataSet;
+        private byte[] data;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnPduTxRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1fL;
+    }
+
+    @Override
+    public long getTxIntervalMs() {
+        return txIntervalMs;
+    }
+
+    @Override
+    public OFBsnPduTxRequest.Builder setTxIntervalMs(long txIntervalMs) {
+        this.txIntervalMs = txIntervalMs;
+        this.txIntervalMsSet = true;
+        return this;
+    }
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public OFBsnPduTxRequest.Builder setPortNo(OFPort portNo) {
+        this.portNo = portNo;
+        this.portNoSet = true;
+        return this;
+    }
+    @Override
+    public short getSlotNum() {
+        return slotNum;
+    }
+
+    @Override
+    public OFBsnPduTxRequest.Builder setSlotNum(short slotNum) {
+        this.slotNum = slotNum;
+        this.slotNumSet = true;
+        return this;
+    }
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+    @Override
+    public OFBsnPduTxRequest.Builder setData(byte[] data) {
+        this.data = data;
+        this.dataSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnPduTxRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            long txIntervalMs = this.txIntervalMsSet ? this.txIntervalMs : DEFAULT_TX_INTERVAL_MS;
+            OFPort portNo = this.portNoSet ? this.portNo : DEFAULT_PORT_NO;
+            if(portNo == null)
+                throw new NullPointerException("Property portNo must not be null");
+            short slotNum = this.slotNumSet ? this.slotNum : DEFAULT_SLOT_NUM;
+            byte[] data = this.dataSet ? this.data : DEFAULT_DATA;
+            if(data == null)
+                throw new NullPointerException("Property data must not be null");
+
+
+            return new OFBsnPduTxRequestVer10(
+                    xid,
+                    txIntervalMs,
+                    portNo,
+                    slotNum,
+                    data
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnPduTxRequest> {
+        @Override
+        public OFBsnPduTxRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x1fL
+            int subtype = bb.readInt();
+            if(subtype != 0x1f)
+                throw new OFParseError("Wrong subtype: Expected=0x1fL(0x1fL), got="+subtype);
+            long txIntervalMs = U32.f(bb.readInt());
+            OFPort portNo = OFPort.read2Bytes(bb);
+            short slotNum = U8.f(bb.readByte());
+            // pad: 3 bytes
+            bb.skipBytes(3);
+            byte[] data = ChannelUtils.readBytes(bb, length - (bb.readerIndex() - start));
+
+            OFBsnPduTxRequestVer10 bsnPduTxRequestVer10 = new OFBsnPduTxRequestVer10(
+                    xid,
+                      txIntervalMs,
+                      portNo,
+                      slotNum,
+                      data
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnPduTxRequestVer10);
+            return bsnPduTxRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnPduTxRequestVer10Funnel FUNNEL = new OFBsnPduTxRequestVer10Funnel();
+    static class OFBsnPduTxRequestVer10Funnel implements Funnel<OFBsnPduTxRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnPduTxRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // FIXME: skip funnel of length
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x1fL
+            sink.putInt(0x1f);
+            sink.putLong(message.txIntervalMs);
+            message.portNo.putTo(sink);
+            sink.putShort(message.slotNum);
+            // skip pad (3 bytes)
+            sink.putBytes(message.data);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnPduTxRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnPduTxRequestVer10 message) {
+            int startIndex = bb.writerIndex();
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // length is length of variable message, will be updated at the end
+            int lengthIndex = bb.writerIndex();
+            bb.writeShort(U16.t(0));
+
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x1fL
+            bb.writeInt(0x1f);
+            bb.writeInt(U32.t(message.txIntervalMs));
+            message.portNo.write2Bytes(bb);
+            bb.writeByte(U8.t(message.slotNum));
+            // pad: 3 bytes
+            bb.writeZero(3);
+            bb.writeBytes(message.data);
+
+            // update length field
+            int length = bb.writerIndex() - startIndex;
+            bb.setShort(lengthIndex, length);
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnPduTxRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("txIntervalMs=").append(txIntervalMs);
+        b.append(", ");
+        b.append("portNo=").append(portNo);
+        b.append(", ");
+        b.append("slotNum=").append(slotNum);
+        b.append(", ");
+        b.append("data=").append(Arrays.toString(data));
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnPduTxRequestVer10 other = (OFBsnPduTxRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( txIntervalMs != other.txIntervalMs)
+            return false;
+        if (portNo == null) {
+            if (other.portNo != null)
+                return false;
+        } else if (!portNo.equals(other.portNo))
+            return false;
+        if( slotNum != other.slotNum)
+            return false;
+        if (!Arrays.equals(data, other.data))
+                return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime *  (int) (txIntervalMs ^ (txIntervalMs >>> 32));
+        result = prime * result + ((portNo == null) ? 0 : portNo.hashCode());
+        result = prime * result + slotNum;
+        result = prime * result + Arrays.hashCode(data);
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetIpMaskVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetIpMaskVer10.java
new file mode 100644
index 0000000..46ccc66
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetIpMaskVer10.java
@@ -0,0 +1,413 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnSetIpMaskVer10 implements OFBsnSetIpMask {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnSetIpMaskVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 24;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static short DEFAULT_INDEX = (short) 0x0;
+        private final static long DEFAULT_MASK = 0x0L;
+
+    // OF message fields
+    private final long xid;
+    private final short index;
+    private final long mask;
+//
+    // Immutable default instance
+    final static OFBsnSetIpMaskVer10 DEFAULT = new OFBsnSetIpMaskVer10(
+        DEFAULT_XID, DEFAULT_INDEX, DEFAULT_MASK
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnSetIpMaskVer10(long xid, short index, long mask) {
+        this.xid = xid;
+        this.index = index;
+        this.mask = mask;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x0L;
+    }
+
+    @Override
+    public short getIndex() {
+        return index;
+    }
+
+    @Override
+    public long getMask() {
+        return mask;
+    }
+
+
+
+    public OFBsnSetIpMask.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnSetIpMask.Builder {
+        final OFBsnSetIpMaskVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean indexSet;
+        private short index;
+        private boolean maskSet;
+        private long mask;
+
+        BuilderWithParent(OFBsnSetIpMaskVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnSetIpMask.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x0L;
+    }
+
+    @Override
+    public short getIndex() {
+        return index;
+    }
+
+    @Override
+    public OFBsnSetIpMask.Builder setIndex(short index) {
+        this.index = index;
+        this.indexSet = true;
+        return this;
+    }
+    @Override
+    public long getMask() {
+        return mask;
+    }
+
+    @Override
+    public OFBsnSetIpMask.Builder setMask(long mask) {
+        this.mask = mask;
+        this.maskSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnSetIpMask build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                short index = this.indexSet ? this.index : parentMessage.index;
+                long mask = this.maskSet ? this.mask : parentMessage.mask;
+
+                //
+                return new OFBsnSetIpMaskVer10(
+                    xid,
+                    index,
+                    mask
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnSetIpMask.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean indexSet;
+        private short index;
+        private boolean maskSet;
+        private long mask;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnSetIpMask.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x0L;
+    }
+
+    @Override
+    public short getIndex() {
+        return index;
+    }
+
+    @Override
+    public OFBsnSetIpMask.Builder setIndex(short index) {
+        this.index = index;
+        this.indexSet = true;
+        return this;
+    }
+    @Override
+    public long getMask() {
+        return mask;
+    }
+
+    @Override
+    public OFBsnSetIpMask.Builder setMask(long mask) {
+        this.mask = mask;
+        this.maskSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnSetIpMask build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            short index = this.indexSet ? this.index : DEFAULT_INDEX;
+            long mask = this.maskSet ? this.mask : DEFAULT_MASK;
+
+
+            return new OFBsnSetIpMaskVer10(
+                    xid,
+                    index,
+                    mask
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnSetIpMask> {
+        @Override
+        public OFBsnSetIpMask readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 24)
+                throw new OFParseError("Wrong length: Expected=24(24), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x0L
+            int subtype = bb.readInt();
+            if(subtype != 0x0)
+                throw new OFParseError("Wrong subtype: Expected=0x0L(0x0L), got="+subtype);
+            short index = U8.f(bb.readByte());
+            // pad: 3 bytes
+            bb.skipBytes(3);
+            long mask = U32.f(bb.readInt());
+
+            OFBsnSetIpMaskVer10 bsnSetIpMaskVer10 = new OFBsnSetIpMaskVer10(
+                    xid,
+                      index,
+                      mask
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnSetIpMaskVer10);
+            return bsnSetIpMaskVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnSetIpMaskVer10Funnel FUNNEL = new OFBsnSetIpMaskVer10Funnel();
+    static class OFBsnSetIpMaskVer10Funnel implements Funnel<OFBsnSetIpMaskVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnSetIpMaskVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 24
+            sink.putShort((short) 0x18);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x0L
+            sink.putInt(0x0);
+            sink.putShort(message.index);
+            // skip pad (3 bytes)
+            sink.putLong(message.mask);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnSetIpMaskVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnSetIpMaskVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 24
+            bb.writeShort((short) 0x18);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x0L
+            bb.writeInt(0x0);
+            bb.writeByte(U8.t(message.index));
+            // pad: 3 bytes
+            bb.writeZero(3);
+            bb.writeInt(U32.t(message.mask));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnSetIpMaskVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("index=").append(index);
+        b.append(", ");
+        b.append("mask=").append(mask);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnSetIpMaskVer10 other = (OFBsnSetIpMaskVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( index != other.index)
+            return false;
+        if( mask != other.mask)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + index;
+        result = prime *  (int) (mask ^ (mask >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetL2TableReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetL2TableReplyVer10.java
new file mode 100644
index 0000000..2f93768
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetL2TableReplyVer10.java
@@ -0,0 +1,460 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnSetL2TableReplyVer10 implements OFBsnSetL2TableReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnSetL2TableReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 24;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static boolean DEFAULT_L2_TABLE_ENABLE = false;
+        private final static int DEFAULT_L2_TABLE_PRIORITY = 0x0;
+        private final static long DEFAULT_STATUS = 0x0L;
+
+    // OF message fields
+    private final long xid;
+    private final boolean l2TableEnable;
+    private final int l2TablePriority;
+    private final long status;
+//
+    // Immutable default instance
+    final static OFBsnSetL2TableReplyVer10 DEFAULT = new OFBsnSetL2TableReplyVer10(
+        DEFAULT_XID, DEFAULT_L2_TABLE_ENABLE, DEFAULT_L2_TABLE_PRIORITY, DEFAULT_STATUS
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnSetL2TableReplyVer10(long xid, boolean l2TableEnable, int l2TablePriority, long status) {
+        this.xid = xid;
+        this.l2TableEnable = l2TableEnable;
+        this.l2TablePriority = l2TablePriority;
+        this.status = status;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x18L;
+    }
+
+    @Override
+    public boolean isL2TableEnable() {
+        return l2TableEnable;
+    }
+
+    @Override
+    public int getL2TablePriority() {
+        return l2TablePriority;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+
+
+    public OFBsnSetL2TableReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnSetL2TableReply.Builder {
+        final OFBsnSetL2TableReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean l2TableEnableSet;
+        private boolean l2TableEnable;
+        private boolean l2TablePrioritySet;
+        private int l2TablePriority;
+        private boolean statusSet;
+        private long status;
+
+        BuilderWithParent(OFBsnSetL2TableReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnSetL2TableReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x18L;
+    }
+
+    @Override
+    public boolean isL2TableEnable() {
+        return l2TableEnable;
+    }
+
+    @Override
+    public OFBsnSetL2TableReply.Builder setL2TableEnable(boolean l2TableEnable) {
+        this.l2TableEnable = l2TableEnable;
+        this.l2TableEnableSet = true;
+        return this;
+    }
+    @Override
+    public int getL2TablePriority() {
+        return l2TablePriority;
+    }
+
+    @Override
+    public OFBsnSetL2TableReply.Builder setL2TablePriority(int l2TablePriority) {
+        this.l2TablePriority = l2TablePriority;
+        this.l2TablePrioritySet = true;
+        return this;
+    }
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnSetL2TableReply.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnSetL2TableReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                boolean l2TableEnable = this.l2TableEnableSet ? this.l2TableEnable : parentMessage.l2TableEnable;
+                int l2TablePriority = this.l2TablePrioritySet ? this.l2TablePriority : parentMessage.l2TablePriority;
+                long status = this.statusSet ? this.status : parentMessage.status;
+
+                //
+                return new OFBsnSetL2TableReplyVer10(
+                    xid,
+                    l2TableEnable,
+                    l2TablePriority,
+                    status
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnSetL2TableReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean l2TableEnableSet;
+        private boolean l2TableEnable;
+        private boolean l2TablePrioritySet;
+        private int l2TablePriority;
+        private boolean statusSet;
+        private long status;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnSetL2TableReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x18L;
+    }
+
+    @Override
+    public boolean isL2TableEnable() {
+        return l2TableEnable;
+    }
+
+    @Override
+    public OFBsnSetL2TableReply.Builder setL2TableEnable(boolean l2TableEnable) {
+        this.l2TableEnable = l2TableEnable;
+        this.l2TableEnableSet = true;
+        return this;
+    }
+    @Override
+    public int getL2TablePriority() {
+        return l2TablePriority;
+    }
+
+    @Override
+    public OFBsnSetL2TableReply.Builder setL2TablePriority(int l2TablePriority) {
+        this.l2TablePriority = l2TablePriority;
+        this.l2TablePrioritySet = true;
+        return this;
+    }
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnSetL2TableReply.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnSetL2TableReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            boolean l2TableEnable = this.l2TableEnableSet ? this.l2TableEnable : DEFAULT_L2_TABLE_ENABLE;
+            int l2TablePriority = this.l2TablePrioritySet ? this.l2TablePriority : DEFAULT_L2_TABLE_PRIORITY;
+            long status = this.statusSet ? this.status : DEFAULT_STATUS;
+
+
+            return new OFBsnSetL2TableReplyVer10(
+                    xid,
+                    l2TableEnable,
+                    l2TablePriority,
+                    status
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnSetL2TableReply> {
+        @Override
+        public OFBsnSetL2TableReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 24)
+                throw new OFParseError("Wrong length: Expected=24(24), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x18L
+            int subtype = bb.readInt();
+            if(subtype != 0x18)
+                throw new OFParseError("Wrong subtype: Expected=0x18L(0x18L), got="+subtype);
+            boolean l2TableEnable = (bb.readByte() != 0);
+            // pad: 1 bytes
+            bb.skipBytes(1);
+            int l2TablePriority = U16.f(bb.readShort());
+            long status = U32.f(bb.readInt());
+
+            OFBsnSetL2TableReplyVer10 bsnSetL2TableReplyVer10 = new OFBsnSetL2TableReplyVer10(
+                    xid,
+                      l2TableEnable,
+                      l2TablePriority,
+                      status
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnSetL2TableReplyVer10);
+            return bsnSetL2TableReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnSetL2TableReplyVer10Funnel FUNNEL = new OFBsnSetL2TableReplyVer10Funnel();
+    static class OFBsnSetL2TableReplyVer10Funnel implements Funnel<OFBsnSetL2TableReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnSetL2TableReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 24
+            sink.putShort((short) 0x18);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x18L
+            sink.putInt(0x18);
+            sink.putBoolean(message.l2TableEnable);
+            // skip pad (1 bytes)
+            sink.putInt(message.l2TablePriority);
+            sink.putLong(message.status);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnSetL2TableReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnSetL2TableReplyVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 24
+            bb.writeShort((short) 0x18);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x18L
+            bb.writeInt(0x18);
+            bb.writeByte(message.l2TableEnable ? 1 : 0);
+            // pad: 1 bytes
+            bb.writeZero(1);
+            bb.writeShort(U16.t(message.l2TablePriority));
+            bb.writeInt(U32.t(message.status));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnSetL2TableReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("l2TableEnable=").append(l2TableEnable);
+        b.append(", ");
+        b.append("l2TablePriority=").append(l2TablePriority);
+        b.append(", ");
+        b.append("status=").append(status);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnSetL2TableReplyVer10 other = (OFBsnSetL2TableReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( l2TableEnable != other.l2TableEnable)
+            return false;
+        if( l2TablePriority != other.l2TablePriority)
+            return false;
+        if( status != other.status)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + (l2TableEnable ? 1231 : 1237);
+        result = prime * result + l2TablePriority;
+        result = prime *  (int) (status ^ (status >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetL2TableRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetL2TableRequestVer10.java
new file mode 100644
index 0000000..dbc6dea
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetL2TableRequestVer10.java
@@ -0,0 +1,418 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnSetL2TableRequestVer10 implements OFBsnSetL2TableRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnSetL2TableRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 24;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static boolean DEFAULT_L2_TABLE_ENABLE = false;
+        private final static int DEFAULT_L2_TABLE_PRIORITY = 0x0;
+
+    // OF message fields
+    private final long xid;
+    private final boolean l2TableEnable;
+    private final int l2TablePriority;
+//
+    // Immutable default instance
+    final static OFBsnSetL2TableRequestVer10 DEFAULT = new OFBsnSetL2TableRequestVer10(
+        DEFAULT_XID, DEFAULT_L2_TABLE_ENABLE, DEFAULT_L2_TABLE_PRIORITY
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnSetL2TableRequestVer10(long xid, boolean l2TableEnable, int l2TablePriority) {
+        this.xid = xid;
+        this.l2TableEnable = l2TableEnable;
+        this.l2TablePriority = l2TablePriority;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xcL;
+    }
+
+    @Override
+    public boolean isL2TableEnable() {
+        return l2TableEnable;
+    }
+
+    @Override
+    public int getL2TablePriority() {
+        return l2TablePriority;
+    }
+
+
+
+    public OFBsnSetL2TableRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnSetL2TableRequest.Builder {
+        final OFBsnSetL2TableRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean l2TableEnableSet;
+        private boolean l2TableEnable;
+        private boolean l2TablePrioritySet;
+        private int l2TablePriority;
+
+        BuilderWithParent(OFBsnSetL2TableRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnSetL2TableRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xcL;
+    }
+
+    @Override
+    public boolean isL2TableEnable() {
+        return l2TableEnable;
+    }
+
+    @Override
+    public OFBsnSetL2TableRequest.Builder setL2TableEnable(boolean l2TableEnable) {
+        this.l2TableEnable = l2TableEnable;
+        this.l2TableEnableSet = true;
+        return this;
+    }
+    @Override
+    public int getL2TablePriority() {
+        return l2TablePriority;
+    }
+
+    @Override
+    public OFBsnSetL2TableRequest.Builder setL2TablePriority(int l2TablePriority) {
+        this.l2TablePriority = l2TablePriority;
+        this.l2TablePrioritySet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnSetL2TableRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                boolean l2TableEnable = this.l2TableEnableSet ? this.l2TableEnable : parentMessage.l2TableEnable;
+                int l2TablePriority = this.l2TablePrioritySet ? this.l2TablePriority : parentMessage.l2TablePriority;
+
+                //
+                return new OFBsnSetL2TableRequestVer10(
+                    xid,
+                    l2TableEnable,
+                    l2TablePriority
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnSetL2TableRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean l2TableEnableSet;
+        private boolean l2TableEnable;
+        private boolean l2TablePrioritySet;
+        private int l2TablePriority;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnSetL2TableRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xcL;
+    }
+
+    @Override
+    public boolean isL2TableEnable() {
+        return l2TableEnable;
+    }
+
+    @Override
+    public OFBsnSetL2TableRequest.Builder setL2TableEnable(boolean l2TableEnable) {
+        this.l2TableEnable = l2TableEnable;
+        this.l2TableEnableSet = true;
+        return this;
+    }
+    @Override
+    public int getL2TablePriority() {
+        return l2TablePriority;
+    }
+
+    @Override
+    public OFBsnSetL2TableRequest.Builder setL2TablePriority(int l2TablePriority) {
+        this.l2TablePriority = l2TablePriority;
+        this.l2TablePrioritySet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnSetL2TableRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            boolean l2TableEnable = this.l2TableEnableSet ? this.l2TableEnable : DEFAULT_L2_TABLE_ENABLE;
+            int l2TablePriority = this.l2TablePrioritySet ? this.l2TablePriority : DEFAULT_L2_TABLE_PRIORITY;
+
+
+            return new OFBsnSetL2TableRequestVer10(
+                    xid,
+                    l2TableEnable,
+                    l2TablePriority
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnSetL2TableRequest> {
+        @Override
+        public OFBsnSetL2TableRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 24)
+                throw new OFParseError("Wrong length: Expected=24(24), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0xcL
+            int subtype = bb.readInt();
+            if(subtype != 0xc)
+                throw new OFParseError("Wrong subtype: Expected=0xcL(0xcL), got="+subtype);
+            boolean l2TableEnable = (bb.readByte() != 0);
+            // pad: 1 bytes
+            bb.skipBytes(1);
+            int l2TablePriority = U16.f(bb.readShort());
+            // pad: 4 bytes
+            bb.skipBytes(4);
+
+            OFBsnSetL2TableRequestVer10 bsnSetL2TableRequestVer10 = new OFBsnSetL2TableRequestVer10(
+                    xid,
+                      l2TableEnable,
+                      l2TablePriority
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnSetL2TableRequestVer10);
+            return bsnSetL2TableRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnSetL2TableRequestVer10Funnel FUNNEL = new OFBsnSetL2TableRequestVer10Funnel();
+    static class OFBsnSetL2TableRequestVer10Funnel implements Funnel<OFBsnSetL2TableRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnSetL2TableRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 24
+            sink.putShort((short) 0x18);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0xcL
+            sink.putInt(0xc);
+            sink.putBoolean(message.l2TableEnable);
+            // skip pad (1 bytes)
+            sink.putInt(message.l2TablePriority);
+            // skip pad (4 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnSetL2TableRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnSetL2TableRequestVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 24
+            bb.writeShort((short) 0x18);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0xcL
+            bb.writeInt(0xc);
+            bb.writeByte(message.l2TableEnable ? 1 : 0);
+            // pad: 1 bytes
+            bb.writeZero(1);
+            bb.writeShort(U16.t(message.l2TablePriority));
+            // pad: 4 bytes
+            bb.writeZero(4);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnSetL2TableRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("l2TableEnable=").append(l2TableEnable);
+        b.append(", ");
+        b.append("l2TablePriority=").append(l2TablePriority);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnSetL2TableRequestVer10 other = (OFBsnSetL2TableRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( l2TableEnable != other.l2TableEnable)
+            return false;
+        if( l2TablePriority != other.l2TablePriority)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + (l2TableEnable ? 1231 : 1237);
+        result = prime * result + l2TablePriority;
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetMirroringVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetMirroringVer10.java
new file mode 100644
index 0000000..cb71dd5
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetMirroringVer10.java
@@ -0,0 +1,366 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnSetMirroringVer10 implements OFBsnSetMirroring {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnSetMirroringVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 20;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static short DEFAULT_REPORT_MIRROR_PORTS = (short) 0x0;
+
+    // OF message fields
+    private final long xid;
+    private final short reportMirrorPorts;
+//
+    // Immutable default instance
+    final static OFBsnSetMirroringVer10 DEFAULT = new OFBsnSetMirroringVer10(
+        DEFAULT_XID, DEFAULT_REPORT_MIRROR_PORTS
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnSetMirroringVer10(long xid, short reportMirrorPorts) {
+        this.xid = xid;
+        this.reportMirrorPorts = reportMirrorPorts;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x3L;
+    }
+
+    @Override
+    public short getReportMirrorPorts() {
+        return reportMirrorPorts;
+    }
+
+
+
+    public OFBsnSetMirroring.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnSetMirroring.Builder {
+        final OFBsnSetMirroringVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean reportMirrorPortsSet;
+        private short reportMirrorPorts;
+
+        BuilderWithParent(OFBsnSetMirroringVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnSetMirroring.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x3L;
+    }
+
+    @Override
+    public short getReportMirrorPorts() {
+        return reportMirrorPorts;
+    }
+
+    @Override
+    public OFBsnSetMirroring.Builder setReportMirrorPorts(short reportMirrorPorts) {
+        this.reportMirrorPorts = reportMirrorPorts;
+        this.reportMirrorPortsSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnSetMirroring build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                short reportMirrorPorts = this.reportMirrorPortsSet ? this.reportMirrorPorts : parentMessage.reportMirrorPorts;
+
+                //
+                return new OFBsnSetMirroringVer10(
+                    xid,
+                    reportMirrorPorts
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnSetMirroring.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean reportMirrorPortsSet;
+        private short reportMirrorPorts;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnSetMirroring.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x3L;
+    }
+
+    @Override
+    public short getReportMirrorPorts() {
+        return reportMirrorPorts;
+    }
+
+    @Override
+    public OFBsnSetMirroring.Builder setReportMirrorPorts(short reportMirrorPorts) {
+        this.reportMirrorPorts = reportMirrorPorts;
+        this.reportMirrorPortsSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnSetMirroring build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            short reportMirrorPorts = this.reportMirrorPortsSet ? this.reportMirrorPorts : DEFAULT_REPORT_MIRROR_PORTS;
+
+
+            return new OFBsnSetMirroringVer10(
+                    xid,
+                    reportMirrorPorts
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnSetMirroring> {
+        @Override
+        public OFBsnSetMirroring readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 20)
+                throw new OFParseError("Wrong length: Expected=20(20), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x3L
+            int subtype = bb.readInt();
+            if(subtype != 0x3)
+                throw new OFParseError("Wrong subtype: Expected=0x3L(0x3L), got="+subtype);
+            short reportMirrorPorts = U8.f(bb.readByte());
+            // pad: 3 bytes
+            bb.skipBytes(3);
+
+            OFBsnSetMirroringVer10 bsnSetMirroringVer10 = new OFBsnSetMirroringVer10(
+                    xid,
+                      reportMirrorPorts
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnSetMirroringVer10);
+            return bsnSetMirroringVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnSetMirroringVer10Funnel FUNNEL = new OFBsnSetMirroringVer10Funnel();
+    static class OFBsnSetMirroringVer10Funnel implements Funnel<OFBsnSetMirroringVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnSetMirroringVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 20
+            sink.putShort((short) 0x14);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x3L
+            sink.putInt(0x3);
+            sink.putShort(message.reportMirrorPorts);
+            // skip pad (3 bytes)
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnSetMirroringVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnSetMirroringVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 20
+            bb.writeShort((short) 0x14);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x3L
+            bb.writeInt(0x3);
+            bb.writeByte(U8.t(message.reportMirrorPorts));
+            // pad: 3 bytes
+            bb.writeZero(3);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnSetMirroringVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("reportMirrorPorts=").append(reportMirrorPorts);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnSetMirroringVer10 other = (OFBsnSetMirroringVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( reportMirrorPorts != other.reportMirrorPorts)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + reportMirrorPorts;
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetPktinSuppressionReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetPktinSuppressionReplyVer10.java
new file mode 100644
index 0000000..7791761
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetPktinSuppressionReplyVer10.java
@@ -0,0 +1,361 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnSetPktinSuppressionReplyVer10 implements OFBsnSetPktinSuppressionReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnSetPktinSuppressionReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 20;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static long DEFAULT_STATUS = 0x0L;
+
+    // OF message fields
+    private final long xid;
+    private final long status;
+//
+    // Immutable default instance
+    final static OFBsnSetPktinSuppressionReplyVer10 DEFAULT = new OFBsnSetPktinSuppressionReplyVer10(
+        DEFAULT_XID, DEFAULT_STATUS
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnSetPktinSuppressionReplyVer10(long xid, long status) {
+        this.xid = xid;
+        this.status = status;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x19L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+
+
+    public OFBsnSetPktinSuppressionReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnSetPktinSuppressionReply.Builder {
+        final OFBsnSetPktinSuppressionReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean statusSet;
+        private long status;
+
+        BuilderWithParent(OFBsnSetPktinSuppressionReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnSetPktinSuppressionReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x19L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnSetPktinSuppressionReply.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnSetPktinSuppressionReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                long status = this.statusSet ? this.status : parentMessage.status;
+
+                //
+                return new OFBsnSetPktinSuppressionReplyVer10(
+                    xid,
+                    status
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnSetPktinSuppressionReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean statusSet;
+        private long status;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnSetPktinSuppressionReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x19L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnSetPktinSuppressionReply.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnSetPktinSuppressionReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            long status = this.statusSet ? this.status : DEFAULT_STATUS;
+
+
+            return new OFBsnSetPktinSuppressionReplyVer10(
+                    xid,
+                    status
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnSetPktinSuppressionReply> {
+        @Override
+        public OFBsnSetPktinSuppressionReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 20)
+                throw new OFParseError("Wrong length: Expected=20(20), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x19L
+            int subtype = bb.readInt();
+            if(subtype != 0x19)
+                throw new OFParseError("Wrong subtype: Expected=0x19L(0x19L), got="+subtype);
+            long status = U32.f(bb.readInt());
+
+            OFBsnSetPktinSuppressionReplyVer10 bsnSetPktinSuppressionReplyVer10 = new OFBsnSetPktinSuppressionReplyVer10(
+                    xid,
+                      status
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnSetPktinSuppressionReplyVer10);
+            return bsnSetPktinSuppressionReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnSetPktinSuppressionReplyVer10Funnel FUNNEL = new OFBsnSetPktinSuppressionReplyVer10Funnel();
+    static class OFBsnSetPktinSuppressionReplyVer10Funnel implements Funnel<OFBsnSetPktinSuppressionReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnSetPktinSuppressionReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 20
+            sink.putShort((short) 0x14);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x19L
+            sink.putInt(0x19);
+            sink.putLong(message.status);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnSetPktinSuppressionReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnSetPktinSuppressionReplyVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 20
+            bb.writeShort((short) 0x14);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x19L
+            bb.writeInt(0x19);
+            bb.writeInt(U32.t(message.status));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnSetPktinSuppressionReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("status=").append(status);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnSetPktinSuppressionReplyVer10 other = (OFBsnSetPktinSuppressionReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( status != other.status)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime *  (int) (status ^ (status >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetPktinSuppressionRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetPktinSuppressionRequestVer10.java
new file mode 100644
index 0000000..758af8d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnSetPktinSuppressionRequestVer10.java
@@ -0,0 +1,561 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnSetPktinSuppressionRequestVer10 implements OFBsnSetPktinSuppressionRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnSetPktinSuppressionRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 32;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static boolean DEFAULT_ENABLED = false;
+        private final static int DEFAULT_IDLE_TIMEOUT = 0x0;
+        private final static int DEFAULT_HARD_TIMEOUT = 0x0;
+        private final static int DEFAULT_PRIORITY = 0x0;
+        private final static U64 DEFAULT_COOKIE = U64.ZERO;
+
+    // OF message fields
+    private final long xid;
+    private final boolean enabled;
+    private final int idleTimeout;
+    private final int hardTimeout;
+    private final int priority;
+    private final U64 cookie;
+//
+    // Immutable default instance
+    final static OFBsnSetPktinSuppressionRequestVer10 DEFAULT = new OFBsnSetPktinSuppressionRequestVer10(
+        DEFAULT_XID, DEFAULT_ENABLED, DEFAULT_IDLE_TIMEOUT, DEFAULT_HARD_TIMEOUT, DEFAULT_PRIORITY, DEFAULT_COOKIE
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnSetPktinSuppressionRequestVer10(long xid, boolean enabled, int idleTimeout, int hardTimeout, int priority, U64 cookie) {
+        this.xid = xid;
+        this.enabled = enabled;
+        this.idleTimeout = idleTimeout;
+        this.hardTimeout = hardTimeout;
+        this.priority = priority;
+        this.cookie = cookie;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xbL;
+    }
+
+    @Override
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    @Override
+    public int getIdleTimeout() {
+        return idleTimeout;
+    }
+
+    @Override
+    public int getHardTimeout() {
+        return hardTimeout;
+    }
+
+    @Override
+    public int getPriority() {
+        return priority;
+    }
+
+    @Override
+    public U64 getCookie() {
+        return cookie;
+    }
+
+
+
+    public OFBsnSetPktinSuppressionRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnSetPktinSuppressionRequest.Builder {
+        final OFBsnSetPktinSuppressionRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean enabledSet;
+        private boolean enabled;
+        private boolean idleTimeoutSet;
+        private int idleTimeout;
+        private boolean hardTimeoutSet;
+        private int hardTimeout;
+        private boolean prioritySet;
+        private int priority;
+        private boolean cookieSet;
+        private U64 cookie;
+
+        BuilderWithParent(OFBsnSetPktinSuppressionRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnSetPktinSuppressionRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xbL;
+    }
+
+    @Override
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    @Override
+    public OFBsnSetPktinSuppressionRequest.Builder setEnabled(boolean enabled) {
+        this.enabled = enabled;
+        this.enabledSet = true;
+        return this;
+    }
+    @Override
+    public int getIdleTimeout() {
+        return idleTimeout;
+    }
+
+    @Override
+    public OFBsnSetPktinSuppressionRequest.Builder setIdleTimeout(int idleTimeout) {
+        this.idleTimeout = idleTimeout;
+        this.idleTimeoutSet = true;
+        return this;
+    }
+    @Override
+    public int getHardTimeout() {
+        return hardTimeout;
+    }
+
+    @Override
+    public OFBsnSetPktinSuppressionRequest.Builder setHardTimeout(int hardTimeout) {
+        this.hardTimeout = hardTimeout;
+        this.hardTimeoutSet = true;
+        return this;
+    }
+    @Override
+    public int getPriority() {
+        return priority;
+    }
+
+    @Override
+    public OFBsnSetPktinSuppressionRequest.Builder setPriority(int priority) {
+        this.priority = priority;
+        this.prioritySet = true;
+        return this;
+    }
+    @Override
+    public U64 getCookie() {
+        return cookie;
+    }
+
+    @Override
+    public OFBsnSetPktinSuppressionRequest.Builder setCookie(U64 cookie) {
+        this.cookie = cookie;
+        this.cookieSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnSetPktinSuppressionRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                boolean enabled = this.enabledSet ? this.enabled : parentMessage.enabled;
+                int idleTimeout = this.idleTimeoutSet ? this.idleTimeout : parentMessage.idleTimeout;
+                int hardTimeout = this.hardTimeoutSet ? this.hardTimeout : parentMessage.hardTimeout;
+                int priority = this.prioritySet ? this.priority : parentMessage.priority;
+                U64 cookie = this.cookieSet ? this.cookie : parentMessage.cookie;
+                if(cookie == null)
+                    throw new NullPointerException("Property cookie must not be null");
+
+                //
+                return new OFBsnSetPktinSuppressionRequestVer10(
+                    xid,
+                    enabled,
+                    idleTimeout,
+                    hardTimeout,
+                    priority,
+                    cookie
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnSetPktinSuppressionRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean enabledSet;
+        private boolean enabled;
+        private boolean idleTimeoutSet;
+        private int idleTimeout;
+        private boolean hardTimeoutSet;
+        private int hardTimeout;
+        private boolean prioritySet;
+        private int priority;
+        private boolean cookieSet;
+        private U64 cookie;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnSetPktinSuppressionRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xbL;
+    }
+
+    @Override
+    public boolean isEnabled() {
+        return enabled;
+    }
+
+    @Override
+    public OFBsnSetPktinSuppressionRequest.Builder setEnabled(boolean enabled) {
+        this.enabled = enabled;
+        this.enabledSet = true;
+        return this;
+    }
+    @Override
+    public int getIdleTimeout() {
+        return idleTimeout;
+    }
+
+    @Override
+    public OFBsnSetPktinSuppressionRequest.Builder setIdleTimeout(int idleTimeout) {
+        this.idleTimeout = idleTimeout;
+        this.idleTimeoutSet = true;
+        return this;
+    }
+    @Override
+    public int getHardTimeout() {
+        return hardTimeout;
+    }
+
+    @Override
+    public OFBsnSetPktinSuppressionRequest.Builder setHardTimeout(int hardTimeout) {
+        this.hardTimeout = hardTimeout;
+        this.hardTimeoutSet = true;
+        return this;
+    }
+    @Override
+    public int getPriority() {
+        return priority;
+    }
+
+    @Override
+    public OFBsnSetPktinSuppressionRequest.Builder setPriority(int priority) {
+        this.priority = priority;
+        this.prioritySet = true;
+        return this;
+    }
+    @Override
+    public U64 getCookie() {
+        return cookie;
+    }
+
+    @Override
+    public OFBsnSetPktinSuppressionRequest.Builder setCookie(U64 cookie) {
+        this.cookie = cookie;
+        this.cookieSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnSetPktinSuppressionRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            boolean enabled = this.enabledSet ? this.enabled : DEFAULT_ENABLED;
+            int idleTimeout = this.idleTimeoutSet ? this.idleTimeout : DEFAULT_IDLE_TIMEOUT;
+            int hardTimeout = this.hardTimeoutSet ? this.hardTimeout : DEFAULT_HARD_TIMEOUT;
+            int priority = this.prioritySet ? this.priority : DEFAULT_PRIORITY;
+            U64 cookie = this.cookieSet ? this.cookie : DEFAULT_COOKIE;
+            if(cookie == null)
+                throw new NullPointerException("Property cookie must not be null");
+
+
+            return new OFBsnSetPktinSuppressionRequestVer10(
+                    xid,
+                    enabled,
+                    idleTimeout,
+                    hardTimeout,
+                    priority,
+                    cookie
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnSetPktinSuppressionRequest> {
+        @Override
+        public OFBsnSetPktinSuppressionRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 32)
+                throw new OFParseError("Wrong length: Expected=32(32), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0xbL
+            int subtype = bb.readInt();
+            if(subtype != 0xb)
+                throw new OFParseError("Wrong subtype: Expected=0xbL(0xbL), got="+subtype);
+            boolean enabled = (bb.readByte() != 0);
+            // pad: 1 bytes
+            bb.skipBytes(1);
+            int idleTimeout = U16.f(bb.readShort());
+            int hardTimeout = U16.f(bb.readShort());
+            int priority = U16.f(bb.readShort());
+            U64 cookie = U64.ofRaw(bb.readLong());
+
+            OFBsnSetPktinSuppressionRequestVer10 bsnSetPktinSuppressionRequestVer10 = new OFBsnSetPktinSuppressionRequestVer10(
+                    xid,
+                      enabled,
+                      idleTimeout,
+                      hardTimeout,
+                      priority,
+                      cookie
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnSetPktinSuppressionRequestVer10);
+            return bsnSetPktinSuppressionRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnSetPktinSuppressionRequestVer10Funnel FUNNEL = new OFBsnSetPktinSuppressionRequestVer10Funnel();
+    static class OFBsnSetPktinSuppressionRequestVer10Funnel implements Funnel<OFBsnSetPktinSuppressionRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnSetPktinSuppressionRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 32
+            sink.putShort((short) 0x20);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0xbL
+            sink.putInt(0xb);
+            sink.putBoolean(message.enabled);
+            // skip pad (1 bytes)
+            sink.putInt(message.idleTimeout);
+            sink.putInt(message.hardTimeout);
+            sink.putInt(message.priority);
+            message.cookie.putTo(sink);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnSetPktinSuppressionRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnSetPktinSuppressionRequestVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 32
+            bb.writeShort((short) 0x20);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0xbL
+            bb.writeInt(0xb);
+            bb.writeByte(message.enabled ? 1 : 0);
+            // pad: 1 bytes
+            bb.writeZero(1);
+            bb.writeShort(U16.t(message.idleTimeout));
+            bb.writeShort(U16.t(message.hardTimeout));
+            bb.writeShort(U16.t(message.priority));
+            bb.writeLong(message.cookie.getValue());
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnSetPktinSuppressionRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("enabled=").append(enabled);
+        b.append(", ");
+        b.append("idleTimeout=").append(idleTimeout);
+        b.append(", ");
+        b.append("hardTimeout=").append(hardTimeout);
+        b.append(", ");
+        b.append("priority=").append(priority);
+        b.append(", ");
+        b.append("cookie=").append(cookie);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnSetPktinSuppressionRequestVer10 other = (OFBsnSetPktinSuppressionRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( enabled != other.enabled)
+            return false;
+        if( idleTimeout != other.idleTimeout)
+            return false;
+        if( hardTimeout != other.hardTimeout)
+            return false;
+        if( priority != other.priority)
+            return false;
+        if (cookie == null) {
+            if (other.cookie != null)
+                return false;
+        } else if (!cookie.equals(other.cookie))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + (enabled ? 1231 : 1237);
+        result = prime * result + idleTimeout;
+        result = prime * result + hardTimeout;
+        result = prime * result + priority;
+        result = prime * result + ((cookie == null) ? 0 : cookie.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnShellCommandVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnShellCommandVer10.java
new file mode 100644
index 0000000..a6a04cb
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnShellCommandVer10.java
@@ -0,0 +1,418 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+import java.util.Arrays;
+
+class OFBsnShellCommandVer10 implements OFBsnShellCommand {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnShellCommandVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 20;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static long DEFAULT_SERVICE = 0x0L;
+        private final static byte[] DEFAULT_DATA = new byte[0];
+
+    // OF message fields
+    private final long xid;
+    private final long service;
+    private final byte[] data;
+//
+    // Immutable default instance
+    final static OFBsnShellCommandVer10 DEFAULT = new OFBsnShellCommandVer10(
+        DEFAULT_XID, DEFAULT_SERVICE, DEFAULT_DATA
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnShellCommandVer10(long xid, long service, byte[] data) {
+        this.xid = xid;
+        this.service = service;
+        this.data = data;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x6L;
+    }
+
+    @Override
+    public long getService() {
+        return service;
+    }
+
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+
+
+    public OFBsnShellCommand.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnShellCommand.Builder {
+        final OFBsnShellCommandVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean serviceSet;
+        private long service;
+        private boolean dataSet;
+        private byte[] data;
+
+        BuilderWithParent(OFBsnShellCommandVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnShellCommand.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x6L;
+    }
+
+    @Override
+    public long getService() {
+        return service;
+    }
+
+    @Override
+    public OFBsnShellCommand.Builder setService(long service) {
+        this.service = service;
+        this.serviceSet = true;
+        return this;
+    }
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+    @Override
+    public OFBsnShellCommand.Builder setData(byte[] data) {
+        this.data = data;
+        this.dataSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnShellCommand build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                long service = this.serviceSet ? this.service : parentMessage.service;
+                byte[] data = this.dataSet ? this.data : parentMessage.data;
+                if(data == null)
+                    throw new NullPointerException("Property data must not be null");
+
+                //
+                return new OFBsnShellCommandVer10(
+                    xid,
+                    service,
+                    data
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnShellCommand.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean serviceSet;
+        private long service;
+        private boolean dataSet;
+        private byte[] data;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnShellCommand.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x6L;
+    }
+
+    @Override
+    public long getService() {
+        return service;
+    }
+
+    @Override
+    public OFBsnShellCommand.Builder setService(long service) {
+        this.service = service;
+        this.serviceSet = true;
+        return this;
+    }
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+    @Override
+    public OFBsnShellCommand.Builder setData(byte[] data) {
+        this.data = data;
+        this.dataSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnShellCommand build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            long service = this.serviceSet ? this.service : DEFAULT_SERVICE;
+            byte[] data = this.dataSet ? this.data : DEFAULT_DATA;
+            if(data == null)
+                throw new NullPointerException("Property data must not be null");
+
+
+            return new OFBsnShellCommandVer10(
+                    xid,
+                    service,
+                    data
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnShellCommand> {
+        @Override
+        public OFBsnShellCommand readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x6L
+            int subtype = bb.readInt();
+            if(subtype != 0x6)
+                throw new OFParseError("Wrong subtype: Expected=0x6L(0x6L), got="+subtype);
+            long service = U32.f(bb.readInt());
+            byte[] data = ChannelUtils.readBytes(bb, length - (bb.readerIndex() - start));
+
+            OFBsnShellCommandVer10 bsnShellCommandVer10 = new OFBsnShellCommandVer10(
+                    xid,
+                      service,
+                      data
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnShellCommandVer10);
+            return bsnShellCommandVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnShellCommandVer10Funnel FUNNEL = new OFBsnShellCommandVer10Funnel();
+    static class OFBsnShellCommandVer10Funnel implements Funnel<OFBsnShellCommandVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnShellCommandVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // FIXME: skip funnel of length
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x6L
+            sink.putInt(0x6);
+            sink.putLong(message.service);
+            sink.putBytes(message.data);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnShellCommandVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnShellCommandVer10 message) {
+            int startIndex = bb.writerIndex();
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // length is length of variable message, will be updated at the end
+            int lengthIndex = bb.writerIndex();
+            bb.writeShort(U16.t(0));
+
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x6L
+            bb.writeInt(0x6);
+            bb.writeInt(U32.t(message.service));
+            bb.writeBytes(message.data);
+
+            // update length field
+            int length = bb.writerIndex() - startIndex;
+            bb.setShort(lengthIndex, length);
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnShellCommandVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("service=").append(service);
+        b.append(", ");
+        b.append("data=").append(Arrays.toString(data));
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnShellCommandVer10 other = (OFBsnShellCommandVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( service != other.service)
+            return false;
+        if (!Arrays.equals(data, other.data))
+                return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime *  (int) (service ^ (service >>> 32));
+        result = prime * result + Arrays.hashCode(data);
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnShellOutputVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnShellOutputVer10.java
new file mode 100644
index 0000000..54e7951
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnShellOutputVer10.java
@@ -0,0 +1,371 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+import java.util.Arrays;
+
+class OFBsnShellOutputVer10 implements OFBsnShellOutput {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnShellOutputVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 16;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static byte[] DEFAULT_DATA = new byte[0];
+
+    // OF message fields
+    private final long xid;
+    private final byte[] data;
+//
+    // Immutable default instance
+    final static OFBsnShellOutputVer10 DEFAULT = new OFBsnShellOutputVer10(
+        DEFAULT_XID, DEFAULT_DATA
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnShellOutputVer10(long xid, byte[] data) {
+        this.xid = xid;
+        this.data = data;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x7L;
+    }
+
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+
+
+    public OFBsnShellOutput.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnShellOutput.Builder {
+        final OFBsnShellOutputVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean dataSet;
+        private byte[] data;
+
+        BuilderWithParent(OFBsnShellOutputVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnShellOutput.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x7L;
+    }
+
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+    @Override
+    public OFBsnShellOutput.Builder setData(byte[] data) {
+        this.data = data;
+        this.dataSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnShellOutput build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                byte[] data = this.dataSet ? this.data : parentMessage.data;
+                if(data == null)
+                    throw new NullPointerException("Property data must not be null");
+
+                //
+                return new OFBsnShellOutputVer10(
+                    xid,
+                    data
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnShellOutput.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean dataSet;
+        private byte[] data;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnShellOutput.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x7L;
+    }
+
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+    @Override
+    public OFBsnShellOutput.Builder setData(byte[] data) {
+        this.data = data;
+        this.dataSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnShellOutput build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            byte[] data = this.dataSet ? this.data : DEFAULT_DATA;
+            if(data == null)
+                throw new NullPointerException("Property data must not be null");
+
+
+            return new OFBsnShellOutputVer10(
+                    xid,
+                    data
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnShellOutput> {
+        @Override
+        public OFBsnShellOutput readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x7L
+            int subtype = bb.readInt();
+            if(subtype != 0x7)
+                throw new OFParseError("Wrong subtype: Expected=0x7L(0x7L), got="+subtype);
+            byte[] data = ChannelUtils.readBytes(bb, length - (bb.readerIndex() - start));
+
+            OFBsnShellOutputVer10 bsnShellOutputVer10 = new OFBsnShellOutputVer10(
+                    xid,
+                      data
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnShellOutputVer10);
+            return bsnShellOutputVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnShellOutputVer10Funnel FUNNEL = new OFBsnShellOutputVer10Funnel();
+    static class OFBsnShellOutputVer10Funnel implements Funnel<OFBsnShellOutputVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnShellOutputVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // FIXME: skip funnel of length
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x7L
+            sink.putInt(0x7);
+            sink.putBytes(message.data);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnShellOutputVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnShellOutputVer10 message) {
+            int startIndex = bb.writerIndex();
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // length is length of variable message, will be updated at the end
+            int lengthIndex = bb.writerIndex();
+            bb.writeShort(U16.t(0));
+
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x7L
+            bb.writeInt(0x7);
+            bb.writeBytes(message.data);
+
+            // update length field
+            int length = bb.writerIndex() - startIndex;
+            bb.setShort(lengthIndex, length);
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnShellOutputVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("data=").append(Arrays.toString(data));
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnShellOutputVer10 other = (OFBsnShellOutputVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if (!Arrays.equals(data, other.data))
+                return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + Arrays.hashCode(data);
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnShellStatusVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnShellStatusVer10.java
new file mode 100644
index 0000000..13189de
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnShellStatusVer10.java
@@ -0,0 +1,361 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnShellStatusVer10 implements OFBsnShellStatus {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnShellStatusVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 20;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static long DEFAULT_STATUS = 0x0L;
+
+    // OF message fields
+    private final long xid;
+    private final long status;
+//
+    // Immutable default instance
+    final static OFBsnShellStatusVer10 DEFAULT = new OFBsnShellStatusVer10(
+        DEFAULT_XID, DEFAULT_STATUS
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnShellStatusVer10(long xid, long status) {
+        this.xid = xid;
+        this.status = status;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x8L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+
+
+    public OFBsnShellStatus.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnShellStatus.Builder {
+        final OFBsnShellStatusVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean statusSet;
+        private long status;
+
+        BuilderWithParent(OFBsnShellStatusVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnShellStatus.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x8L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnShellStatus.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnShellStatus build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                long status = this.statusSet ? this.status : parentMessage.status;
+
+                //
+                return new OFBsnShellStatusVer10(
+                    xid,
+                    status
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnShellStatus.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean statusSet;
+        private long status;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnShellStatus.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x8L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnShellStatus.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnShellStatus build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            long status = this.statusSet ? this.status : DEFAULT_STATUS;
+
+
+            return new OFBsnShellStatusVer10(
+                    xid,
+                    status
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnShellStatus> {
+        @Override
+        public OFBsnShellStatus readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 20)
+                throw new OFParseError("Wrong length: Expected=20(20), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x8L
+            int subtype = bb.readInt();
+            if(subtype != 0x8)
+                throw new OFParseError("Wrong subtype: Expected=0x8L(0x8L), got="+subtype);
+            long status = U32.f(bb.readInt());
+
+            OFBsnShellStatusVer10 bsnShellStatusVer10 = new OFBsnShellStatusVer10(
+                    xid,
+                      status
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnShellStatusVer10);
+            return bsnShellStatusVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnShellStatusVer10Funnel FUNNEL = new OFBsnShellStatusVer10Funnel();
+    static class OFBsnShellStatusVer10Funnel implements Funnel<OFBsnShellStatusVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnShellStatusVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 20
+            sink.putShort((short) 0x14);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x8L
+            sink.putInt(0x8);
+            sink.putLong(message.status);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnShellStatusVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnShellStatusVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 20
+            bb.writeShort((short) 0x14);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x8L
+            bb.writeInt(0x8);
+            bb.writeInt(U32.t(message.status));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnShellStatusVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("status=").append(status);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnShellStatusVer10 other = (OFBsnShellStatusVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( status != other.status)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime *  (int) (status ^ (status >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnStatsReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnStatsReplyVer10.java
new file mode 100644
index 0000000..5dc77e8
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnStatsReplyVer10.java
@@ -0,0 +1,73 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_virtual_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+abstract class OFBsnStatsReplyVer10 {
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 24;
+
+
+    public final static OFBsnStatsReplyVer10.Reader READER = new Reader();
+
+    static class Reader implements OFMessageReader<OFBsnStatsReply> {
+        @Override
+        public OFBsnStatsReply readFrom(ChannelBuffer bb) throws OFParseError {
+            if(bb.readableBytes() < MINIMUM_LENGTH)
+                return null;
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 19
+            byte type = bb.readByte();
+            if(type != (byte) 0x13)
+                throw new OFParseError("Wrong type: Expected=OFType.BARRIER_REPLY(19), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            U32.f(bb.readInt());
+            // fixed value property statsType == 65535
+            short statsType = bb.readShort();
+            if(statsType != (short) 0xffff)
+                throw new OFParseError("Wrong statsType: Expected=OFStatsType.EXPERIMENTER(65535), got="+statsType);
+            OFStatsReplyFlagsSerializerVer10.readFrom(bb);
+            // pad: 4 bytes
+            bb.skipBytes(4);
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            int subtype = bb.readInt();
+            bb.readerIndex(start);
+            switch(subtype) {
+               default:
+                   throw new OFParseError("Unknown value for discriminator subtype of class OFBsnStatsReplyVer10: " + subtype);
+            }
+        }
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnStatsRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnStatsRequestVer10.java
new file mode 100644
index 0000000..197a732
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnStatsRequestVer10.java
@@ -0,0 +1,73 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_virtual_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+abstract class OFBsnStatsRequestVer10 {
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 24;
+
+
+    public final static OFBsnStatsRequestVer10.Reader READER = new Reader();
+
+    static class Reader implements OFMessageReader<OFBsnStatsRequest<?>> {
+        @Override
+        public OFBsnStatsRequest<?> readFrom(ChannelBuffer bb) throws OFParseError {
+            if(bb.readableBytes() < MINIMUM_LENGTH)
+                return null;
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 18
+            byte type = bb.readByte();
+            if(type != (byte) 0x12)
+                throw new OFParseError("Wrong type: Expected=OFType.BARRIER_REQUEST(18), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            U32.f(bb.readInt());
+            // fixed value property statsType == 65535
+            short statsType = bb.readShort();
+            if(statsType != (short) 0xffff)
+                throw new OFParseError("Wrong statsType: Expected=OFStatsType.EXPERIMENTER(65535), got="+statsType);
+            OFStatsRequestFlagsSerializerVer10.readFrom(bb);
+            // pad: 4 bytes
+            bb.skipBytes(4);
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            int subtype = bb.readInt();
+            bb.readerIndex(start);
+            switch(subtype) {
+               default:
+                   throw new OFParseError("Unknown value for discriminator subtype of class OFBsnStatsRequestVer10: " + subtype);
+            }
+        }
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnTlvsVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnTlvsVer10.java
new file mode 100644
index 0000000..7375e41
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnTlvsVer10.java
@@ -0,0 +1,200 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_factory_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+
+public class OFBsnTlvsVer10 implements OFBsnTlvs {
+    public final static OFBsnTlvsVer10 INSTANCE = new OFBsnTlvsVer10();
+
+
+
+
+    public OFBsnTlvBroadcastQueryTimeout.Builder buildBroadcastQueryTimeout() {
+        throw new UnsupportedOperationException("OFBsnTlvBroadcastQueryTimeout not supported in version 1.0");
+    }
+    public OFBsnTlvBroadcastQueryTimeout broadcastQueryTimeout(long value) {
+        throw new UnsupportedOperationException("OFBsnTlvBroadcastQueryTimeout not supported in version 1.0");
+    }
+
+    public OFBsnTlvCircuitId.Builder buildCircuitId() {
+        throw new UnsupportedOperationException("OFBsnTlvCircuitId not supported in version 1.0");
+    }
+    public OFBsnTlvCircuitId circuitId(byte[] value) {
+        throw new UnsupportedOperationException("OFBsnTlvCircuitId not supported in version 1.0");
+    }
+
+    public OFBsnTlvCrcEnabled.Builder buildCrcEnabled() {
+        throw new UnsupportedOperationException("OFBsnTlvCrcEnabled not supported in version 1.0");
+    }
+    public OFBsnTlvCrcEnabled crcEnabled(short value) {
+        throw new UnsupportedOperationException("OFBsnTlvCrcEnabled not supported in version 1.0");
+    }
+
+    public OFBsnTlvIdleNotification idleNotification() {
+        throw new UnsupportedOperationException("OFBsnTlvIdleNotification not supported in version 1.0");
+    }
+
+    public OFBsnTlvIdleTime.Builder buildIdleTime() {
+        throw new UnsupportedOperationException("OFBsnTlvIdleTime not supported in version 1.0");
+    }
+    public OFBsnTlvIdleTime idleTime(U64 value) {
+        throw new UnsupportedOperationException("OFBsnTlvIdleTime not supported in version 1.0");
+    }
+
+    public OFBsnTlvIdleTimeout.Builder buildIdleTimeout() {
+        throw new UnsupportedOperationException("OFBsnTlvIdleTimeout not supported in version 1.0");
+    }
+    public OFBsnTlvIdleTimeout idleTimeout(long value) {
+        throw new UnsupportedOperationException("OFBsnTlvIdleTimeout not supported in version 1.0");
+    }
+
+    public OFBsnTlvIpv4.Builder buildIpv4() {
+        throw new UnsupportedOperationException("OFBsnTlvIpv4 not supported in version 1.0");
+    }
+    public OFBsnTlvIpv4 ipv4(IPv4Address value) {
+        throw new UnsupportedOperationException("OFBsnTlvIpv4 not supported in version 1.0");
+    }
+
+    public OFBsnTlvMac.Builder buildMac() {
+        throw new UnsupportedOperationException("OFBsnTlvMac not supported in version 1.0");
+    }
+    public OFBsnTlvMac mac(MacAddress value) {
+        throw new UnsupportedOperationException("OFBsnTlvMac not supported in version 1.0");
+    }
+
+    public OFBsnTlvMissPackets.Builder buildMissPackets() {
+        throw new UnsupportedOperationException("OFBsnTlvMissPackets not supported in version 1.0");
+    }
+    public OFBsnTlvMissPackets missPackets(U64 value) {
+        throw new UnsupportedOperationException("OFBsnTlvMissPackets not supported in version 1.0");
+    }
+
+    public OFBsnTlvPort.Builder buildPort() {
+        throw new UnsupportedOperationException("OFBsnTlvPort not supported in version 1.0");
+    }
+    public OFBsnTlvPort port(OFPort value) {
+        throw new UnsupportedOperationException("OFBsnTlvPort not supported in version 1.0");
+    }
+
+    public OFBsnTlvQueueId.Builder buildQueueId() {
+        throw new UnsupportedOperationException("OFBsnTlvQueueId not supported in version 1.0");
+    }
+    public OFBsnTlvQueueId queueId(long value) {
+        throw new UnsupportedOperationException("OFBsnTlvQueueId not supported in version 1.0");
+    }
+
+    public OFBsnTlvQueueWeight.Builder buildQueueWeight() {
+        throw new UnsupportedOperationException("OFBsnTlvQueueWeight not supported in version 1.0");
+    }
+    public OFBsnTlvQueueWeight queueWeight(long value) {
+        throw new UnsupportedOperationException("OFBsnTlvQueueWeight not supported in version 1.0");
+    }
+
+    public OFBsnTlvReplyPackets.Builder buildReplyPackets() {
+        throw new UnsupportedOperationException("OFBsnTlvReplyPackets not supported in version 1.0");
+    }
+    public OFBsnTlvReplyPackets replyPackets(U64 value) {
+        throw new UnsupportedOperationException("OFBsnTlvReplyPackets not supported in version 1.0");
+    }
+
+    public OFBsnTlvRequestPackets.Builder buildRequestPackets() {
+        throw new UnsupportedOperationException("OFBsnTlvRequestPackets not supported in version 1.0");
+    }
+    public OFBsnTlvRequestPackets requestPackets(U64 value) {
+        throw new UnsupportedOperationException("OFBsnTlvRequestPackets not supported in version 1.0");
+    }
+
+    public OFBsnTlvRxPackets.Builder buildRxPackets() {
+        throw new UnsupportedOperationException("OFBsnTlvRxPackets not supported in version 1.0");
+    }
+    public OFBsnTlvRxPackets rxPackets(U64 value) {
+        throw new UnsupportedOperationException("OFBsnTlvRxPackets not supported in version 1.0");
+    }
+
+    public OFBsnTlvTxPackets.Builder buildTxPackets() {
+        throw new UnsupportedOperationException("OFBsnTlvTxPackets not supported in version 1.0");
+    }
+    public OFBsnTlvTxPackets txPackets(U64 value) {
+        throw new UnsupportedOperationException("OFBsnTlvTxPackets not supported in version 1.0");
+    }
+
+    public OFBsnTlvUdfAnchor.Builder buildUdfAnchor() {
+        throw new UnsupportedOperationException("OFBsnTlvUdfAnchor not supported in version 1.0");
+    }
+    public OFBsnTlvUdfAnchor udfAnchor(OFBsnUdfAnchor value) {
+        throw new UnsupportedOperationException("OFBsnTlvUdfAnchor not supported in version 1.0");
+    }
+
+    public OFBsnTlvUdfId.Builder buildUdfId() {
+        throw new UnsupportedOperationException("OFBsnTlvUdfId not supported in version 1.0");
+    }
+    public OFBsnTlvUdfId udfId(int value) {
+        throw new UnsupportedOperationException("OFBsnTlvUdfId not supported in version 1.0");
+    }
+
+    public OFBsnTlvUdfLength.Builder buildUdfLength() {
+        throw new UnsupportedOperationException("OFBsnTlvUdfLength not supported in version 1.0");
+    }
+    public OFBsnTlvUdfLength udfLength(int value) {
+        throw new UnsupportedOperationException("OFBsnTlvUdfLength not supported in version 1.0");
+    }
+
+    public OFBsnTlvUdfOffset.Builder buildUdfOffset() {
+        throw new UnsupportedOperationException("OFBsnTlvUdfOffset not supported in version 1.0");
+    }
+    public OFBsnTlvUdfOffset udfOffset(int value) {
+        throw new UnsupportedOperationException("OFBsnTlvUdfOffset not supported in version 1.0");
+    }
+
+    public OFBsnTlvUnicastQueryTimeout.Builder buildUnicastQueryTimeout() {
+        throw new UnsupportedOperationException("OFBsnTlvUnicastQueryTimeout not supported in version 1.0");
+    }
+    public OFBsnTlvUnicastQueryTimeout unicastQueryTimeout(long value) {
+        throw new UnsupportedOperationException("OFBsnTlvUnicastQueryTimeout not supported in version 1.0");
+    }
+
+    public OFBsnTlvVlanVid.Builder buildVlanVid() {
+        throw new UnsupportedOperationException("OFBsnTlvVlanVid not supported in version 1.0");
+    }
+    public OFBsnTlvVlanVid vlanVid(VlanVid value) {
+        throw new UnsupportedOperationException("OFBsnTlvVlanVid not supported in version 1.0");
+    }
+
+    public OFBsnTlvVrf.Builder buildVrf() {
+        throw new UnsupportedOperationException("OFBsnTlvVrf not supported in version 1.0");
+    }
+    public OFBsnTlvVrf vrf(long value) {
+        throw new UnsupportedOperationException("OFBsnTlvVrf not supported in version 1.0");
+    }
+
+    public OFMessageReader<OFBsnTlv> getReader() {
+        throw new UnsupportedOperationException("Reader<OFBsnTlv> not supported in version 1.0");
+    }
+
+
+    public OFVersion getVersion() {
+            return OFVersion.OF_10;
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVirtualPortCreateReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVirtualPortCreateReplyVer10.java
new file mode 100644
index 0000000..1256b9c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVirtualPortCreateReplyVer10.java
@@ -0,0 +1,408 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnVirtualPortCreateReplyVer10 implements OFBsnVirtualPortCreateReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnVirtualPortCreateReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 24;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static long DEFAULT_STATUS = 0x0L;
+        private final static long DEFAULT_VPORT_NO = 0x0L;
+
+    // OF message fields
+    private final long xid;
+    private final long status;
+    private final long vportNo;
+//
+    // Immutable default instance
+    final static OFBsnVirtualPortCreateReplyVer10 DEFAULT = new OFBsnVirtualPortCreateReplyVer10(
+        DEFAULT_XID, DEFAULT_STATUS, DEFAULT_VPORT_NO
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnVirtualPortCreateReplyVer10(long xid, long status, long vportNo) {
+        this.xid = xid;
+        this.status = status;
+        this.vportNo = vportNo;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x10L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public long getVportNo() {
+        return vportNo;
+    }
+
+
+
+    public OFBsnVirtualPortCreateReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnVirtualPortCreateReply.Builder {
+        final OFBsnVirtualPortCreateReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean statusSet;
+        private long status;
+        private boolean vportNoSet;
+        private long vportNo;
+
+        BuilderWithParent(OFBsnVirtualPortCreateReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnVirtualPortCreateReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x10L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnVirtualPortCreateReply.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+    @Override
+    public long getVportNo() {
+        return vportNo;
+    }
+
+    @Override
+    public OFBsnVirtualPortCreateReply.Builder setVportNo(long vportNo) {
+        this.vportNo = vportNo;
+        this.vportNoSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnVirtualPortCreateReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                long status = this.statusSet ? this.status : parentMessage.status;
+                long vportNo = this.vportNoSet ? this.vportNo : parentMessage.vportNo;
+
+                //
+                return new OFBsnVirtualPortCreateReplyVer10(
+                    xid,
+                    status,
+                    vportNo
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnVirtualPortCreateReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean statusSet;
+        private long status;
+        private boolean vportNoSet;
+        private long vportNo;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnVirtualPortCreateReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x10L;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnVirtualPortCreateReply.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+    @Override
+    public long getVportNo() {
+        return vportNo;
+    }
+
+    @Override
+    public OFBsnVirtualPortCreateReply.Builder setVportNo(long vportNo) {
+        this.vportNo = vportNo;
+        this.vportNoSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnVirtualPortCreateReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            long status = this.statusSet ? this.status : DEFAULT_STATUS;
+            long vportNo = this.vportNoSet ? this.vportNo : DEFAULT_VPORT_NO;
+
+
+            return new OFBsnVirtualPortCreateReplyVer10(
+                    xid,
+                    status,
+                    vportNo
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnVirtualPortCreateReply> {
+        @Override
+        public OFBsnVirtualPortCreateReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 24)
+                throw new OFParseError("Wrong length: Expected=24(24), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x10L
+            int subtype = bb.readInt();
+            if(subtype != 0x10)
+                throw new OFParseError("Wrong subtype: Expected=0x10L(0x10L), got="+subtype);
+            long status = U32.f(bb.readInt());
+            long vportNo = U32.f(bb.readInt());
+
+            OFBsnVirtualPortCreateReplyVer10 bsnVirtualPortCreateReplyVer10 = new OFBsnVirtualPortCreateReplyVer10(
+                    xid,
+                      status,
+                      vportNo
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnVirtualPortCreateReplyVer10);
+            return bsnVirtualPortCreateReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnVirtualPortCreateReplyVer10Funnel FUNNEL = new OFBsnVirtualPortCreateReplyVer10Funnel();
+    static class OFBsnVirtualPortCreateReplyVer10Funnel implements Funnel<OFBsnVirtualPortCreateReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnVirtualPortCreateReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 24
+            sink.putShort((short) 0x18);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x10L
+            sink.putInt(0x10);
+            sink.putLong(message.status);
+            sink.putLong(message.vportNo);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnVirtualPortCreateReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnVirtualPortCreateReplyVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 24
+            bb.writeShort((short) 0x18);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x10L
+            bb.writeInt(0x10);
+            bb.writeInt(U32.t(message.status));
+            bb.writeInt(U32.t(message.vportNo));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnVirtualPortCreateReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("status=").append(status);
+        b.append(", ");
+        b.append("vportNo=").append(vportNo);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnVirtualPortCreateReplyVer10 other = (OFBsnVirtualPortCreateReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( status != other.status)
+            return false;
+        if( vportNo != other.vportNo)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime *  (int) (status ^ (status >>> 32));
+        result = prime *  (int) (vportNo ^ (vportNo >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVirtualPortCreateRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVirtualPortCreateRequestVer10.java
new file mode 100644
index 0000000..69741e9
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVirtualPortCreateRequestVer10.java
@@ -0,0 +1,369 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnVirtualPortCreateRequestVer10 implements OFBsnVirtualPortCreateRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnVirtualPortCreateRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 20;
+
+        private final static long DEFAULT_XID = 0x0L;
+
+    // OF message fields
+    private final long xid;
+    private final OFBsnVport vport;
+//
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnVirtualPortCreateRequestVer10(long xid, OFBsnVport vport) {
+        this.xid = xid;
+        this.vport = vport;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xfL;
+    }
+
+    @Override
+    public OFBsnVport getVport() {
+        return vport;
+    }
+
+
+
+    public OFBsnVirtualPortCreateRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnVirtualPortCreateRequest.Builder {
+        final OFBsnVirtualPortCreateRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean vportSet;
+        private OFBsnVport vport;
+
+        BuilderWithParent(OFBsnVirtualPortCreateRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnVirtualPortCreateRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xfL;
+    }
+
+    @Override
+    public OFBsnVport getVport() {
+        return vport;
+    }
+
+    @Override
+    public OFBsnVirtualPortCreateRequest.Builder setVport(OFBsnVport vport) {
+        this.vport = vport;
+        this.vportSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnVirtualPortCreateRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                OFBsnVport vport = this.vportSet ? this.vport : parentMessage.vport;
+                if(vport == null)
+                    throw new NullPointerException("Property vport must not be null");
+
+                //
+                return new OFBsnVirtualPortCreateRequestVer10(
+                    xid,
+                    vport
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnVirtualPortCreateRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean vportSet;
+        private OFBsnVport vport;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnVirtualPortCreateRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0xfL;
+    }
+
+    @Override
+    public OFBsnVport getVport() {
+        return vport;
+    }
+
+    @Override
+    public OFBsnVirtualPortCreateRequest.Builder setVport(OFBsnVport vport) {
+        this.vport = vport;
+        this.vportSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnVirtualPortCreateRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            if(!this.vportSet)
+                throw new IllegalStateException("Property vport doesn't have default value -- must be set");
+            if(vport == null)
+                throw new NullPointerException("Property vport must not be null");
+
+
+            return new OFBsnVirtualPortCreateRequestVer10(
+                    xid,
+                    vport
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnVirtualPortCreateRequest> {
+        @Override
+        public OFBsnVirtualPortCreateRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0xfL
+            int subtype = bb.readInt();
+            if(subtype != 0xf)
+                throw new OFParseError("Wrong subtype: Expected=0xfL(0xfL), got="+subtype);
+            OFBsnVport vport = OFBsnVportVer10.READER.readFrom(bb);
+
+            OFBsnVirtualPortCreateRequestVer10 bsnVirtualPortCreateRequestVer10 = new OFBsnVirtualPortCreateRequestVer10(
+                    xid,
+                      vport
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnVirtualPortCreateRequestVer10);
+            return bsnVirtualPortCreateRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnVirtualPortCreateRequestVer10Funnel FUNNEL = new OFBsnVirtualPortCreateRequestVer10Funnel();
+    static class OFBsnVirtualPortCreateRequestVer10Funnel implements Funnel<OFBsnVirtualPortCreateRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnVirtualPortCreateRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // FIXME: skip funnel of length
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0xfL
+            sink.putInt(0xf);
+            message.vport.putTo(sink);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnVirtualPortCreateRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnVirtualPortCreateRequestVer10 message) {
+            int startIndex = bb.writerIndex();
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // length is length of variable message, will be updated at the end
+            int lengthIndex = bb.writerIndex();
+            bb.writeShort(U16.t(0));
+
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0xfL
+            bb.writeInt(0xf);
+            message.vport.writeTo(bb);
+
+            // update length field
+            int length = bb.writerIndex() - startIndex;
+            bb.setShort(lengthIndex, length);
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnVirtualPortCreateRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("vport=").append(vport);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnVirtualPortCreateRequestVer10 other = (OFBsnVirtualPortCreateRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if (vport == null) {
+            if (other.vport != null)
+                return false;
+        } else if (!vport.equals(other.vport))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + ((vport == null) ? 0 : vport.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVirtualPortRemoveReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVirtualPortRemoveReplyVer10.java
new file mode 100644
index 0000000..440624f
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVirtualPortRemoveReplyVer10.java
@@ -0,0 +1,361 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnVirtualPortRemoveReplyVer10 implements OFBsnVirtualPortRemoveReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnVirtualPortRemoveReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 20;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static long DEFAULT_STATUS = 0x0L;
+
+    // OF message fields
+    private final long xid;
+    private final long status;
+//
+    // Immutable default instance
+    final static OFBsnVirtualPortRemoveReplyVer10 DEFAULT = new OFBsnVirtualPortRemoveReplyVer10(
+        DEFAULT_XID, DEFAULT_STATUS
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnVirtualPortRemoveReplyVer10(long xid, long status) {
+        this.xid = xid;
+        this.status = status;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1aL;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+
+
+    public OFBsnVirtualPortRemoveReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnVirtualPortRemoveReply.Builder {
+        final OFBsnVirtualPortRemoveReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean statusSet;
+        private long status;
+
+        BuilderWithParent(OFBsnVirtualPortRemoveReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnVirtualPortRemoveReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1aL;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnVirtualPortRemoveReply.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnVirtualPortRemoveReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                long status = this.statusSet ? this.status : parentMessage.status;
+
+                //
+                return new OFBsnVirtualPortRemoveReplyVer10(
+                    xid,
+                    status
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnVirtualPortRemoveReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean statusSet;
+        private long status;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnVirtualPortRemoveReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x1aL;
+    }
+
+    @Override
+    public long getStatus() {
+        return status;
+    }
+
+    @Override
+    public OFBsnVirtualPortRemoveReply.Builder setStatus(long status) {
+        this.status = status;
+        this.statusSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnVirtualPortRemoveReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            long status = this.statusSet ? this.status : DEFAULT_STATUS;
+
+
+            return new OFBsnVirtualPortRemoveReplyVer10(
+                    xid,
+                    status
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnVirtualPortRemoveReply> {
+        @Override
+        public OFBsnVirtualPortRemoveReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 20)
+                throw new OFParseError("Wrong length: Expected=20(20), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x1aL
+            int subtype = bb.readInt();
+            if(subtype != 0x1a)
+                throw new OFParseError("Wrong subtype: Expected=0x1aL(0x1aL), got="+subtype);
+            long status = U32.f(bb.readInt());
+
+            OFBsnVirtualPortRemoveReplyVer10 bsnVirtualPortRemoveReplyVer10 = new OFBsnVirtualPortRemoveReplyVer10(
+                    xid,
+                      status
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnVirtualPortRemoveReplyVer10);
+            return bsnVirtualPortRemoveReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnVirtualPortRemoveReplyVer10Funnel FUNNEL = new OFBsnVirtualPortRemoveReplyVer10Funnel();
+    static class OFBsnVirtualPortRemoveReplyVer10Funnel implements Funnel<OFBsnVirtualPortRemoveReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnVirtualPortRemoveReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 20
+            sink.putShort((short) 0x14);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x1aL
+            sink.putInt(0x1a);
+            sink.putLong(message.status);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnVirtualPortRemoveReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnVirtualPortRemoveReplyVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 20
+            bb.writeShort((short) 0x14);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x1aL
+            bb.writeInt(0x1a);
+            bb.writeInt(U32.t(message.status));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnVirtualPortRemoveReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("status=").append(status);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnVirtualPortRemoveReplyVer10 other = (OFBsnVirtualPortRemoveReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( status != other.status)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime *  (int) (status ^ (status >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVirtualPortRemoveRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVirtualPortRemoveRequestVer10.java
new file mode 100644
index 0000000..f178056
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVirtualPortRemoveRequestVer10.java
@@ -0,0 +1,361 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnVirtualPortRemoveRequestVer10 implements OFBsnVirtualPortRemoveRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnVirtualPortRemoveRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 20;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static long DEFAULT_VPORT_NO = 0x0L;
+
+    // OF message fields
+    private final long xid;
+    private final long vportNo;
+//
+    // Immutable default instance
+    final static OFBsnVirtualPortRemoveRequestVer10 DEFAULT = new OFBsnVirtualPortRemoveRequestVer10(
+        DEFAULT_XID, DEFAULT_VPORT_NO
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnVirtualPortRemoveRequestVer10(long xid, long vportNo) {
+        this.xid = xid;
+        this.vportNo = vportNo;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x11L;
+    }
+
+    @Override
+    public long getVportNo() {
+        return vportNo;
+    }
+
+
+
+    public OFBsnVirtualPortRemoveRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnVirtualPortRemoveRequest.Builder {
+        final OFBsnVirtualPortRemoveRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean vportNoSet;
+        private long vportNo;
+
+        BuilderWithParent(OFBsnVirtualPortRemoveRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnVirtualPortRemoveRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x11L;
+    }
+
+    @Override
+    public long getVportNo() {
+        return vportNo;
+    }
+
+    @Override
+    public OFBsnVirtualPortRemoveRequest.Builder setVportNo(long vportNo) {
+        this.vportNo = vportNo;
+        this.vportNoSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFBsnVirtualPortRemoveRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                long vportNo = this.vportNoSet ? this.vportNo : parentMessage.vportNo;
+
+                //
+                return new OFBsnVirtualPortRemoveRequestVer10(
+                    xid,
+                    vportNo
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnVirtualPortRemoveRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean vportNoSet;
+        private long vportNo;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.EXPERIMENTER;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFBsnVirtualPortRemoveRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public long getExperimenter() {
+        return 0x5c16c7L;
+    }
+
+    @Override
+    public long getSubtype() {
+        return 0x11L;
+    }
+
+    @Override
+    public long getVportNo() {
+        return vportNo;
+    }
+
+    @Override
+    public OFBsnVirtualPortRemoveRequest.Builder setVportNo(long vportNo) {
+        this.vportNo = vportNo;
+        this.vportNoSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFBsnVirtualPortRemoveRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            long vportNo = this.vportNoSet ? this.vportNo : DEFAULT_VPORT_NO;
+
+
+            return new OFBsnVirtualPortRemoveRequestVer10(
+                    xid,
+                    vportNo
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnVirtualPortRemoveRequest> {
+        @Override
+        public OFBsnVirtualPortRemoveRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 20)
+                throw new OFParseError("Wrong length: Expected=20(20), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property experimenter == 0x5c16c7L
+            int experimenter = bb.readInt();
+            if(experimenter != 0x5c16c7)
+                throw new OFParseError("Wrong experimenter: Expected=0x5c16c7L(0x5c16c7L), got="+experimenter);
+            // fixed value property subtype == 0x11L
+            int subtype = bb.readInt();
+            if(subtype != 0x11)
+                throw new OFParseError("Wrong subtype: Expected=0x11L(0x11L), got="+subtype);
+            long vportNo = U32.f(bb.readInt());
+
+            OFBsnVirtualPortRemoveRequestVer10 bsnVirtualPortRemoveRequestVer10 = new OFBsnVirtualPortRemoveRequestVer10(
+                    xid,
+                      vportNo
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnVirtualPortRemoveRequestVer10);
+            return bsnVirtualPortRemoveRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnVirtualPortRemoveRequestVer10Funnel FUNNEL = new OFBsnVirtualPortRemoveRequestVer10Funnel();
+    static class OFBsnVirtualPortRemoveRequestVer10Funnel implements Funnel<OFBsnVirtualPortRemoveRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnVirtualPortRemoveRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 4
+            sink.putByte((byte) 0x4);
+            // fixed value property length = 20
+            sink.putShort((short) 0x14);
+            sink.putLong(message.xid);
+            // fixed value property experimenter = 0x5c16c7L
+            sink.putInt(0x5c16c7);
+            // fixed value property subtype = 0x11L
+            sink.putInt(0x11);
+            sink.putLong(message.vportNo);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnVirtualPortRemoveRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnVirtualPortRemoveRequestVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 4
+            bb.writeByte((byte) 0x4);
+            // fixed value property length = 20
+            bb.writeShort((short) 0x14);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property experimenter = 0x5c16c7L
+            bb.writeInt(0x5c16c7);
+            // fixed value property subtype = 0x11L
+            bb.writeInt(0x11);
+            bb.writeInt(U32.t(message.vportNo));
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnVirtualPortRemoveRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("vportNo=").append(vportNo);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnVirtualPortRemoveRequestVer10 other = (OFBsnVirtualPortRemoveRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if( vportNo != other.vportNo)
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime *  (int) (vportNo ^ (vportNo >>> 32));
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportL2GreFlagsSerializerVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportL2GreFlagsSerializerVer10.java
new file mode 100644
index 0000000..4c2111d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportL2GreFlagsSerializerVer10.java
@@ -0,0 +1,102 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const_set_serializer.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.projectfloodlight.openflow.protocol.OFBsnVportL2GreFlags;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import java.util.EnumSet;
+import java.util.Collections;
+
+
+public class OFBsnVportL2GreFlagsSerializerVer10 {
+
+    public final static int BSN_VPORT_L2GRE_LOCAL_MAC_IS_VALID_VAL = 0x1;
+    public final static int BSN_VPORT_L2GRE_DSCP_ASSIGN_VAL = 0x2;
+    public final static int BSN_VPORT_L2GRE_DSCP_COPY_VAL = 0x4;
+    public final static int BSN_VPORT_L2GRE_LOOPBACK_IS_VALID_VAL = 0x8;
+    public final static int BSN_VPORT_L2GRE_RATE_LIMIT_IS_VALID_VAL = 0x10;
+
+    public static Set<OFBsnVportL2GreFlags> readFrom(ChannelBuffer bb) throws OFParseError {
+        try {
+            return ofWireValue(bb.readInt());
+        } catch (IllegalArgumentException e) {
+            throw new OFParseError(e);
+        }
+    }
+
+    public static void writeTo(ChannelBuffer bb, Set<OFBsnVportL2GreFlags> set) {
+        bb.writeInt(toWireValue(set));
+    }
+
+    public static void putTo(Set<OFBsnVportL2GreFlags> set, PrimitiveSink sink) {
+        sink.putInt(toWireValue(set));
+    }
+
+
+    public static Set<OFBsnVportL2GreFlags> ofWireValue(int val) {
+        EnumSet<OFBsnVportL2GreFlags> set = EnumSet.noneOf(OFBsnVportL2GreFlags.class);
+
+        if((val & BSN_VPORT_L2GRE_LOCAL_MAC_IS_VALID_VAL) != 0)
+            set.add(OFBsnVportL2GreFlags.BSN_VPORT_L2GRE_LOCAL_MAC_IS_VALID);
+        if((val & BSN_VPORT_L2GRE_DSCP_ASSIGN_VAL) != 0)
+            set.add(OFBsnVportL2GreFlags.BSN_VPORT_L2GRE_DSCP_ASSIGN);
+        if((val & BSN_VPORT_L2GRE_DSCP_COPY_VAL) != 0)
+            set.add(OFBsnVportL2GreFlags.BSN_VPORT_L2GRE_DSCP_COPY);
+        if((val & BSN_VPORT_L2GRE_LOOPBACK_IS_VALID_VAL) != 0)
+            set.add(OFBsnVportL2GreFlags.BSN_VPORT_L2GRE_LOOPBACK_IS_VALID);
+        if((val & BSN_VPORT_L2GRE_RATE_LIMIT_IS_VALID_VAL) != 0)
+            set.add(OFBsnVportL2GreFlags.BSN_VPORT_L2GRE_RATE_LIMIT_IS_VALID);
+        return Collections.unmodifiableSet(set);
+    }
+
+    public static int toWireValue(Set<OFBsnVportL2GreFlags> set) {
+        int wireValue = 0;
+
+        for(OFBsnVportL2GreFlags e: set) {
+            switch(e) {
+                case BSN_VPORT_L2GRE_LOCAL_MAC_IS_VALID:
+                    wireValue |= BSN_VPORT_L2GRE_LOCAL_MAC_IS_VALID_VAL;
+                    break;
+                case BSN_VPORT_L2GRE_DSCP_ASSIGN:
+                    wireValue |= BSN_VPORT_L2GRE_DSCP_ASSIGN_VAL;
+                    break;
+                case BSN_VPORT_L2GRE_DSCP_COPY:
+                    wireValue |= BSN_VPORT_L2GRE_DSCP_COPY_VAL;
+                    break;
+                case BSN_VPORT_L2GRE_LOOPBACK_IS_VALID:
+                    wireValue |= BSN_VPORT_L2GRE_LOOPBACK_IS_VALID_VAL;
+                    break;
+                case BSN_VPORT_L2GRE_RATE_LIMIT_IS_VALID:
+                    wireValue |= BSN_VPORT_L2GRE_RATE_LIMIT_IS_VALID_VAL;
+                    break;
+                default:
+                    throw new IllegalArgumentException("Illegal enum value for type OFBsnVportL2GreFlags in version 1.0: " + e);
+            }
+        }
+        return wireValue;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportL2GreVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportL2GreVer10.java
new file mode 100644
index 0000000..32af98d
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportL2GreVer10.java
@@ -0,0 +1,839 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import com.google.common.collect.ImmutableSet;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnVportL2GreVer10 implements OFBsnVportL2Gre {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnVportL2GreVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 60;
+
+        private final static Set<OFBsnVportL2GreFlags> DEFAULT_FLAGS = ImmutableSet.<OFBsnVportL2GreFlags>of();
+        private final static OFPort DEFAULT_PORT_NO = OFPort.ANY;
+        private final static OFPort DEFAULT_LOOPBACK_PORT_NO = OFPort.ANY;
+        private final static MacAddress DEFAULT_LOCAL_MAC = MacAddress.NONE;
+        private final static MacAddress DEFAULT_NH_MAC = MacAddress.NONE;
+        private final static IPv4Address DEFAULT_SRC_IP = IPv4Address.NONE;
+        private final static IPv4Address DEFAULT_DST_IP = IPv4Address.NONE;
+        private final static short DEFAULT_DSCP = (short) 0x0;
+        private final static short DEFAULT_TTL = (short) 0x0;
+        private final static long DEFAULT_VPN = 0x0L;
+        private final static long DEFAULT_RATE_LIMIT = 0x0L;
+        private final static String DEFAULT_IF_NAME = "";
+
+    // OF message fields
+    private final Set<OFBsnVportL2GreFlags> flags;
+    private final OFPort portNo;
+    private final OFPort loopbackPortNo;
+    private final MacAddress localMac;
+    private final MacAddress nhMac;
+    private final IPv4Address srcIp;
+    private final IPv4Address dstIp;
+    private final short dscp;
+    private final short ttl;
+    private final long vpn;
+    private final long rateLimit;
+    private final String ifName;
+//
+    // Immutable default instance
+    final static OFBsnVportL2GreVer10 DEFAULT = new OFBsnVportL2GreVer10(
+        DEFAULT_FLAGS, DEFAULT_PORT_NO, DEFAULT_LOOPBACK_PORT_NO, DEFAULT_LOCAL_MAC, DEFAULT_NH_MAC, DEFAULT_SRC_IP, DEFAULT_DST_IP, DEFAULT_DSCP, DEFAULT_TTL, DEFAULT_VPN, DEFAULT_RATE_LIMIT, DEFAULT_IF_NAME
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnVportL2GreVer10(Set<OFBsnVportL2GreFlags> flags, OFPort portNo, OFPort loopbackPortNo, MacAddress localMac, MacAddress nhMac, IPv4Address srcIp, IPv4Address dstIp, short dscp, short ttl, long vpn, long rateLimit, String ifName) {
+        this.flags = flags;
+        this.portNo = portNo;
+        this.loopbackPortNo = loopbackPortNo;
+        this.localMac = localMac;
+        this.nhMac = nhMac;
+        this.srcIp = srcIp;
+        this.dstIp = dstIp;
+        this.dscp = dscp;
+        this.ttl = ttl;
+        this.vpn = vpn;
+        this.rateLimit = rateLimit;
+        this.ifName = ifName;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public int getType() {
+        return 0x1;
+    }
+
+    @Override
+    public Set<OFBsnVportL2GreFlags> getFlags() {
+        return flags;
+    }
+
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public OFPort getLoopbackPortNo() {
+        return loopbackPortNo;
+    }
+
+    @Override
+    public MacAddress getLocalMac() {
+        return localMac;
+    }
+
+    @Override
+    public MacAddress getNhMac() {
+        return nhMac;
+    }
+
+    @Override
+    public IPv4Address getSrcIp() {
+        return srcIp;
+    }
+
+    @Override
+    public IPv4Address getDstIp() {
+        return dstIp;
+    }
+
+    @Override
+    public short getDscp() {
+        return dscp;
+    }
+
+    @Override
+    public short getTtl() {
+        return ttl;
+    }
+
+    @Override
+    public long getVpn() {
+        return vpn;
+    }
+
+    @Override
+    public long getRateLimit() {
+        return rateLimit;
+    }
+
+    @Override
+    public String getIfName() {
+        return ifName;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    public OFBsnVportL2Gre.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnVportL2Gre.Builder {
+        final OFBsnVportL2GreVer10 parentMessage;
+
+        // OF message fields
+        private boolean flagsSet;
+        private Set<OFBsnVportL2GreFlags> flags;
+        private boolean portNoSet;
+        private OFPort portNo;
+        private boolean loopbackPortNoSet;
+        private OFPort loopbackPortNo;
+        private boolean localMacSet;
+        private MacAddress localMac;
+        private boolean nhMacSet;
+        private MacAddress nhMac;
+        private boolean srcIpSet;
+        private IPv4Address srcIp;
+        private boolean dstIpSet;
+        private IPv4Address dstIp;
+        private boolean dscpSet;
+        private short dscp;
+        private boolean ttlSet;
+        private short ttl;
+        private boolean vpnSet;
+        private long vpn;
+        private boolean rateLimitSet;
+        private long rateLimit;
+        private boolean ifNameSet;
+        private String ifName;
+
+        BuilderWithParent(OFBsnVportL2GreVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public int getType() {
+        return 0x1;
+    }
+
+    @Override
+    public Set<OFBsnVportL2GreFlags> getFlags() {
+        return flags;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setFlags(Set<OFBsnVportL2GreFlags> flags) {
+        this.flags = flags;
+        this.flagsSet = true;
+        return this;
+    }
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setPortNo(OFPort portNo) {
+        this.portNo = portNo;
+        this.portNoSet = true;
+        return this;
+    }
+    @Override
+    public OFPort getLoopbackPortNo() {
+        return loopbackPortNo;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setLoopbackPortNo(OFPort loopbackPortNo) {
+        this.loopbackPortNo = loopbackPortNo;
+        this.loopbackPortNoSet = true;
+        return this;
+    }
+    @Override
+    public MacAddress getLocalMac() {
+        return localMac;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setLocalMac(MacAddress localMac) {
+        this.localMac = localMac;
+        this.localMacSet = true;
+        return this;
+    }
+    @Override
+    public MacAddress getNhMac() {
+        return nhMac;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setNhMac(MacAddress nhMac) {
+        this.nhMac = nhMac;
+        this.nhMacSet = true;
+        return this;
+    }
+    @Override
+    public IPv4Address getSrcIp() {
+        return srcIp;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setSrcIp(IPv4Address srcIp) {
+        this.srcIp = srcIp;
+        this.srcIpSet = true;
+        return this;
+    }
+    @Override
+    public IPv4Address getDstIp() {
+        return dstIp;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setDstIp(IPv4Address dstIp) {
+        this.dstIp = dstIp;
+        this.dstIpSet = true;
+        return this;
+    }
+    @Override
+    public short getDscp() {
+        return dscp;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setDscp(short dscp) {
+        this.dscp = dscp;
+        this.dscpSet = true;
+        return this;
+    }
+    @Override
+    public short getTtl() {
+        return ttl;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setTtl(short ttl) {
+        this.ttl = ttl;
+        this.ttlSet = true;
+        return this;
+    }
+    @Override
+    public long getVpn() {
+        return vpn;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setVpn(long vpn) {
+        this.vpn = vpn;
+        this.vpnSet = true;
+        return this;
+    }
+    @Override
+    public long getRateLimit() {
+        return rateLimit;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setRateLimit(long rateLimit) {
+        this.rateLimit = rateLimit;
+        this.rateLimitSet = true;
+        return this;
+    }
+    @Override
+    public String getIfName() {
+        return ifName;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setIfName(String ifName) {
+        this.ifName = ifName;
+        this.ifNameSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+        @Override
+        public OFBsnVportL2Gre build() {
+                Set<OFBsnVportL2GreFlags> flags = this.flagsSet ? this.flags : parentMessage.flags;
+                if(flags == null)
+                    throw new NullPointerException("Property flags must not be null");
+                OFPort portNo = this.portNoSet ? this.portNo : parentMessage.portNo;
+                if(portNo == null)
+                    throw new NullPointerException("Property portNo must not be null");
+                OFPort loopbackPortNo = this.loopbackPortNoSet ? this.loopbackPortNo : parentMessage.loopbackPortNo;
+                if(loopbackPortNo == null)
+                    throw new NullPointerException("Property loopbackPortNo must not be null");
+                MacAddress localMac = this.localMacSet ? this.localMac : parentMessage.localMac;
+                if(localMac == null)
+                    throw new NullPointerException("Property localMac must not be null");
+                MacAddress nhMac = this.nhMacSet ? this.nhMac : parentMessage.nhMac;
+                if(nhMac == null)
+                    throw new NullPointerException("Property nhMac must not be null");
+                IPv4Address srcIp = this.srcIpSet ? this.srcIp : parentMessage.srcIp;
+                if(srcIp == null)
+                    throw new NullPointerException("Property srcIp must not be null");
+                IPv4Address dstIp = this.dstIpSet ? this.dstIp : parentMessage.dstIp;
+                if(dstIp == null)
+                    throw new NullPointerException("Property dstIp must not be null");
+                short dscp = this.dscpSet ? this.dscp : parentMessage.dscp;
+                short ttl = this.ttlSet ? this.ttl : parentMessage.ttl;
+                long vpn = this.vpnSet ? this.vpn : parentMessage.vpn;
+                long rateLimit = this.rateLimitSet ? this.rateLimit : parentMessage.rateLimit;
+                String ifName = this.ifNameSet ? this.ifName : parentMessage.ifName;
+                if(ifName == null)
+                    throw new NullPointerException("Property ifName must not be null");
+
+                //
+                return new OFBsnVportL2GreVer10(
+                    flags,
+                    portNo,
+                    loopbackPortNo,
+                    localMac,
+                    nhMac,
+                    srcIp,
+                    dstIp,
+                    dscp,
+                    ttl,
+                    vpn,
+                    rateLimit,
+                    ifName
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnVportL2Gre.Builder {
+        // OF message fields
+        private boolean flagsSet;
+        private Set<OFBsnVportL2GreFlags> flags;
+        private boolean portNoSet;
+        private OFPort portNo;
+        private boolean loopbackPortNoSet;
+        private OFPort loopbackPortNo;
+        private boolean localMacSet;
+        private MacAddress localMac;
+        private boolean nhMacSet;
+        private MacAddress nhMac;
+        private boolean srcIpSet;
+        private IPv4Address srcIp;
+        private boolean dstIpSet;
+        private IPv4Address dstIp;
+        private boolean dscpSet;
+        private short dscp;
+        private boolean ttlSet;
+        private short ttl;
+        private boolean vpnSet;
+        private long vpn;
+        private boolean rateLimitSet;
+        private long rateLimit;
+        private boolean ifNameSet;
+        private String ifName;
+
+    @Override
+    public int getType() {
+        return 0x1;
+    }
+
+    @Override
+    public Set<OFBsnVportL2GreFlags> getFlags() {
+        return flags;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setFlags(Set<OFBsnVportL2GreFlags> flags) {
+        this.flags = flags;
+        this.flagsSet = true;
+        return this;
+    }
+    @Override
+    public OFPort getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setPortNo(OFPort portNo) {
+        this.portNo = portNo;
+        this.portNoSet = true;
+        return this;
+    }
+    @Override
+    public OFPort getLoopbackPortNo() {
+        return loopbackPortNo;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setLoopbackPortNo(OFPort loopbackPortNo) {
+        this.loopbackPortNo = loopbackPortNo;
+        this.loopbackPortNoSet = true;
+        return this;
+    }
+    @Override
+    public MacAddress getLocalMac() {
+        return localMac;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setLocalMac(MacAddress localMac) {
+        this.localMac = localMac;
+        this.localMacSet = true;
+        return this;
+    }
+    @Override
+    public MacAddress getNhMac() {
+        return nhMac;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setNhMac(MacAddress nhMac) {
+        this.nhMac = nhMac;
+        this.nhMacSet = true;
+        return this;
+    }
+    @Override
+    public IPv4Address getSrcIp() {
+        return srcIp;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setSrcIp(IPv4Address srcIp) {
+        this.srcIp = srcIp;
+        this.srcIpSet = true;
+        return this;
+    }
+    @Override
+    public IPv4Address getDstIp() {
+        return dstIp;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setDstIp(IPv4Address dstIp) {
+        this.dstIp = dstIp;
+        this.dstIpSet = true;
+        return this;
+    }
+    @Override
+    public short getDscp() {
+        return dscp;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setDscp(short dscp) {
+        this.dscp = dscp;
+        this.dscpSet = true;
+        return this;
+    }
+    @Override
+    public short getTtl() {
+        return ttl;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setTtl(short ttl) {
+        this.ttl = ttl;
+        this.ttlSet = true;
+        return this;
+    }
+    @Override
+    public long getVpn() {
+        return vpn;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setVpn(long vpn) {
+        this.vpn = vpn;
+        this.vpnSet = true;
+        return this;
+    }
+    @Override
+    public long getRateLimit() {
+        return rateLimit;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setRateLimit(long rateLimit) {
+        this.rateLimit = rateLimit;
+        this.rateLimitSet = true;
+        return this;
+    }
+    @Override
+    public String getIfName() {
+        return ifName;
+    }
+
+    @Override
+    public OFBsnVportL2Gre.Builder setIfName(String ifName) {
+        this.ifName = ifName;
+        this.ifNameSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+//
+        @Override
+        public OFBsnVportL2Gre build() {
+            Set<OFBsnVportL2GreFlags> flags = this.flagsSet ? this.flags : DEFAULT_FLAGS;
+            if(flags == null)
+                throw new NullPointerException("Property flags must not be null");
+            OFPort portNo = this.portNoSet ? this.portNo : DEFAULT_PORT_NO;
+            if(portNo == null)
+                throw new NullPointerException("Property portNo must not be null");
+            OFPort loopbackPortNo = this.loopbackPortNoSet ? this.loopbackPortNo : DEFAULT_LOOPBACK_PORT_NO;
+            if(loopbackPortNo == null)
+                throw new NullPointerException("Property loopbackPortNo must not be null");
+            MacAddress localMac = this.localMacSet ? this.localMac : DEFAULT_LOCAL_MAC;
+            if(localMac == null)
+                throw new NullPointerException("Property localMac must not be null");
+            MacAddress nhMac = this.nhMacSet ? this.nhMac : DEFAULT_NH_MAC;
+            if(nhMac == null)
+                throw new NullPointerException("Property nhMac must not be null");
+            IPv4Address srcIp = this.srcIpSet ? this.srcIp : DEFAULT_SRC_IP;
+            if(srcIp == null)
+                throw new NullPointerException("Property srcIp must not be null");
+            IPv4Address dstIp = this.dstIpSet ? this.dstIp : DEFAULT_DST_IP;
+            if(dstIp == null)
+                throw new NullPointerException("Property dstIp must not be null");
+            short dscp = this.dscpSet ? this.dscp : DEFAULT_DSCP;
+            short ttl = this.ttlSet ? this.ttl : DEFAULT_TTL;
+            long vpn = this.vpnSet ? this.vpn : DEFAULT_VPN;
+            long rateLimit = this.rateLimitSet ? this.rateLimit : DEFAULT_RATE_LIMIT;
+            String ifName = this.ifNameSet ? this.ifName : DEFAULT_IF_NAME;
+            if(ifName == null)
+                throw new NullPointerException("Property ifName must not be null");
+
+
+            return new OFBsnVportL2GreVer10(
+                    flags,
+                    portNo,
+                    loopbackPortNo,
+                    localMac,
+                    nhMac,
+                    srcIp,
+                    dstIp,
+                    dscp,
+                    ttl,
+                    vpn,
+                    rateLimit,
+                    ifName
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnVportL2Gre> {
+        @Override
+        public OFBsnVportL2Gre readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 0x1
+            short type = bb.readShort();
+            if(type != (short) 0x1)
+                throw new OFParseError("Wrong type: Expected=0x1(0x1), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 60)
+                throw new OFParseError("Wrong length: Expected=60(60), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            Set<OFBsnVportL2GreFlags> flags = OFBsnVportL2GreFlagsSerializerVer10.readFrom(bb);
+            OFPort portNo = OFPort.read2Bytes(bb);
+            OFPort loopbackPortNo = OFPort.read2Bytes(bb);
+            MacAddress localMac = MacAddress.read6Bytes(bb);
+            MacAddress nhMac = MacAddress.read6Bytes(bb);
+            IPv4Address srcIp = IPv4Address.read4Bytes(bb);
+            IPv4Address dstIp = IPv4Address.read4Bytes(bb);
+            short dscp = U8.f(bb.readByte());
+            short ttl = U8.f(bb.readByte());
+            // pad: 2 bytes
+            bb.skipBytes(2);
+            long vpn = U32.f(bb.readInt());
+            long rateLimit = U32.f(bb.readInt());
+            String ifName = ChannelUtils.readFixedLengthString(bb, 16);
+
+            OFBsnVportL2GreVer10 bsnVportL2GreVer10 = new OFBsnVportL2GreVer10(
+                    flags,
+                      portNo,
+                      loopbackPortNo,
+                      localMac,
+                      nhMac,
+                      srcIp,
+                      dstIp,
+                      dscp,
+                      ttl,
+                      vpn,
+                      rateLimit,
+                      ifName
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnVportL2GreVer10);
+            return bsnVportL2GreVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnVportL2GreVer10Funnel FUNNEL = new OFBsnVportL2GreVer10Funnel();
+    static class OFBsnVportL2GreVer10Funnel implements Funnel<OFBsnVportL2GreVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnVportL2GreVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 0x1
+            sink.putShort((short) 0x1);
+            // fixed value property length = 60
+            sink.putShort((short) 0x3c);
+            OFBsnVportL2GreFlagsSerializerVer10.putTo(message.flags, sink);
+            message.portNo.putTo(sink);
+            message.loopbackPortNo.putTo(sink);
+            message.localMac.putTo(sink);
+            message.nhMac.putTo(sink);
+            message.srcIp.putTo(sink);
+            message.dstIp.putTo(sink);
+            sink.putShort(message.dscp);
+            sink.putShort(message.ttl);
+            // skip pad (2 bytes)
+            sink.putLong(message.vpn);
+            sink.putLong(message.rateLimit);
+            sink.putUnencodedChars(message.ifName);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnVportL2GreVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnVportL2GreVer10 message) {
+            // fixed value property type = 0x1
+            bb.writeShort((short) 0x1);
+            // fixed value property length = 60
+            bb.writeShort((short) 0x3c);
+            OFBsnVportL2GreFlagsSerializerVer10.writeTo(bb, message.flags);
+            message.portNo.write2Bytes(bb);
+            message.loopbackPortNo.write2Bytes(bb);
+            message.localMac.write6Bytes(bb);
+            message.nhMac.write6Bytes(bb);
+            message.srcIp.write4Bytes(bb);
+            message.dstIp.write4Bytes(bb);
+            bb.writeByte(U8.t(message.dscp));
+            bb.writeByte(U8.t(message.ttl));
+            // pad: 2 bytes
+            bb.writeZero(2);
+            bb.writeInt(U32.t(message.vpn));
+            bb.writeInt(U32.t(message.rateLimit));
+            ChannelUtils.writeFixedLengthString(bb, message.ifName, 16);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnVportL2GreVer10(");
+        b.append("flags=").append(flags);
+        b.append(", ");
+        b.append("portNo=").append(portNo);
+        b.append(", ");
+        b.append("loopbackPortNo=").append(loopbackPortNo);
+        b.append(", ");
+        b.append("localMac=").append(localMac);
+        b.append(", ");
+        b.append("nhMac=").append(nhMac);
+        b.append(", ");
+        b.append("srcIp=").append(srcIp);
+        b.append(", ");
+        b.append("dstIp=").append(dstIp);
+        b.append(", ");
+        b.append("dscp=").append(dscp);
+        b.append(", ");
+        b.append("ttl=").append(ttl);
+        b.append(", ");
+        b.append("vpn=").append(vpn);
+        b.append(", ");
+        b.append("rateLimit=").append(rateLimit);
+        b.append(", ");
+        b.append("ifName=").append(ifName);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnVportL2GreVer10 other = (OFBsnVportL2GreVer10) obj;
+
+        if (flags == null) {
+            if (other.flags != null)
+                return false;
+        } else if (!flags.equals(other.flags))
+            return false;
+        if (portNo == null) {
+            if (other.portNo != null)
+                return false;
+        } else if (!portNo.equals(other.portNo))
+            return false;
+        if (loopbackPortNo == null) {
+            if (other.loopbackPortNo != null)
+                return false;
+        } else if (!loopbackPortNo.equals(other.loopbackPortNo))
+            return false;
+        if (localMac == null) {
+            if (other.localMac != null)
+                return false;
+        } else if (!localMac.equals(other.localMac))
+            return false;
+        if (nhMac == null) {
+            if (other.nhMac != null)
+                return false;
+        } else if (!nhMac.equals(other.nhMac))
+            return false;
+        if (srcIp == null) {
+            if (other.srcIp != null)
+                return false;
+        } else if (!srcIp.equals(other.srcIp))
+            return false;
+        if (dstIp == null) {
+            if (other.dstIp != null)
+                return false;
+        } else if (!dstIp.equals(other.dstIp))
+            return false;
+        if( dscp != other.dscp)
+            return false;
+        if( ttl != other.ttl)
+            return false;
+        if( vpn != other.vpn)
+            return false;
+        if( rateLimit != other.rateLimit)
+            return false;
+        if (ifName == null) {
+            if (other.ifName != null)
+                return false;
+        } else if (!ifName.equals(other.ifName))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime * result + ((flags == null) ? 0 : flags.hashCode());
+        result = prime * result + ((portNo == null) ? 0 : portNo.hashCode());
+        result = prime * result + ((loopbackPortNo == null) ? 0 : loopbackPortNo.hashCode());
+        result = prime * result + ((localMac == null) ? 0 : localMac.hashCode());
+        result = prime * result + ((nhMac == null) ? 0 : nhMac.hashCode());
+        result = prime * result + ((srcIp == null) ? 0 : srcIp.hashCode());
+        result = prime * result + ((dstIp == null) ? 0 : dstIp.hashCode());
+        result = prime * result + dscp;
+        result = prime * result + ttl;
+        result = prime *  (int) (vpn ^ (vpn >>> 32));
+        result = prime *  (int) (rateLimit ^ (rateLimit >>> 32));
+        result = prime * result + ((ifName == null) ? 0 : ifName.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportQInQUntaggedSerializerVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportQInQUntaggedSerializerVer10.java
new file mode 100644
index 0000000..e3f79b3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportQInQUntaggedSerializerVer10.java
@@ -0,0 +1,69 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const_serializer.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.projectfloodlight.openflow.protocol.OFBsnVportQInQUntagged;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+
+public class OFBsnVportQInQUntaggedSerializerVer10 {
+
+    public final static short BSN_VPORT_Q_IN_Q_UNTAGGED_VAL = (short) 0xffff;
+
+    public static OFBsnVportQInQUntagged readFrom(ChannelBuffer bb) throws OFParseError {
+        try {
+            return ofWireValue(bb.readShort());
+        } catch (IllegalArgumentException e) {
+            throw new OFParseError(e);
+        }
+    }
+
+    public static void writeTo(ChannelBuffer bb, OFBsnVportQInQUntagged e) {
+        bb.writeShort(toWireValue(e));
+    }
+
+    public static void putTo(OFBsnVportQInQUntagged e, PrimitiveSink sink) {
+        sink.putShort(toWireValue(e));
+    }
+
+    public static OFBsnVportQInQUntagged ofWireValue(short val) {
+        switch(val) {
+            case BSN_VPORT_Q_IN_Q_UNTAGGED_VAL:
+                return OFBsnVportQInQUntagged.BSN_VPORT_Q_IN_Q_UNTAGGED;
+            default:
+                throw new IllegalArgumentException("Illegal wire value for type OFBsnVportQInQUntagged in version 1.0: " + val);
+        }
+    }
+
+
+    public static short toWireValue(OFBsnVportQInQUntagged e) {
+        switch(e) {
+            case BSN_VPORT_Q_IN_Q_UNTAGGED:
+                return BSN_VPORT_Q_IN_Q_UNTAGGED_VAL;
+            default:
+                throw new IllegalArgumentException("Illegal enum value for type OFBsnVportQInQUntagged in version 1.0: " + e);
+        }
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportQInQVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportQInQVer10.java
new file mode 100644
index 0000000..7f5b0a3
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportQInQVer10.java
@@ -0,0 +1,502 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFBsnVportQInQVer10 implements OFBsnVportQInQ {
+    private static final Logger logger = LoggerFactory.getLogger(OFBsnVportQInQVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 32;
+
+        private final static long DEFAULT_PORT_NO = 0x0L;
+        private final static int DEFAULT_INGRESS_TPID = 0x0;
+        private final static int DEFAULT_INGRESS_VLAN_ID = 0x0;
+        private final static int DEFAULT_EGRESS_TPID = 0x0;
+        private final static int DEFAULT_EGRESS_VLAN_ID = 0x0;
+        private final static String DEFAULT_IF_NAME = "";
+
+    // OF message fields
+    private final long portNo;
+    private final int ingressTpid;
+    private final int ingressVlanId;
+    private final int egressTpid;
+    private final int egressVlanId;
+    private final String ifName;
+//
+    // Immutable default instance
+    final static OFBsnVportQInQVer10 DEFAULT = new OFBsnVportQInQVer10(
+        DEFAULT_PORT_NO, DEFAULT_INGRESS_TPID, DEFAULT_INGRESS_VLAN_ID, DEFAULT_EGRESS_TPID, DEFAULT_EGRESS_VLAN_ID, DEFAULT_IF_NAME
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFBsnVportQInQVer10(long portNo, int ingressTpid, int ingressVlanId, int egressTpid, int egressVlanId, String ifName) {
+        this.portNo = portNo;
+        this.ingressTpid = ingressTpid;
+        this.ingressVlanId = ingressVlanId;
+        this.egressTpid = egressTpid;
+        this.egressVlanId = egressVlanId;
+        this.ifName = ifName;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public int getType() {
+        return 0x0;
+    }
+
+    @Override
+    public long getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public int getIngressTpid() {
+        return ingressTpid;
+    }
+
+    @Override
+    public int getIngressVlanId() {
+        return ingressVlanId;
+    }
+
+    @Override
+    public int getEgressTpid() {
+        return egressTpid;
+    }
+
+    @Override
+    public int getEgressVlanId() {
+        return egressVlanId;
+    }
+
+    @Override
+    public String getIfName() {
+        return ifName;
+    }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+    public OFBsnVportQInQ.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFBsnVportQInQ.Builder {
+        final OFBsnVportQInQVer10 parentMessage;
+
+        // OF message fields
+        private boolean portNoSet;
+        private long portNo;
+        private boolean ingressTpidSet;
+        private int ingressTpid;
+        private boolean ingressVlanIdSet;
+        private int ingressVlanId;
+        private boolean egressTpidSet;
+        private int egressTpid;
+        private boolean egressVlanIdSet;
+        private int egressVlanId;
+        private boolean ifNameSet;
+        private String ifName;
+
+        BuilderWithParent(OFBsnVportQInQVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public int getType() {
+        return 0x0;
+    }
+
+    @Override
+    public long getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public OFBsnVportQInQ.Builder setPortNo(long portNo) {
+        this.portNo = portNo;
+        this.portNoSet = true;
+        return this;
+    }
+    @Override
+    public int getIngressTpid() {
+        return ingressTpid;
+    }
+
+    @Override
+    public OFBsnVportQInQ.Builder setIngressTpid(int ingressTpid) {
+        this.ingressTpid = ingressTpid;
+        this.ingressTpidSet = true;
+        return this;
+    }
+    @Override
+    public int getIngressVlanId() {
+        return ingressVlanId;
+    }
+
+    @Override
+    public OFBsnVportQInQ.Builder setIngressVlanId(int ingressVlanId) {
+        this.ingressVlanId = ingressVlanId;
+        this.ingressVlanIdSet = true;
+        return this;
+    }
+    @Override
+    public int getEgressTpid() {
+        return egressTpid;
+    }
+
+    @Override
+    public OFBsnVportQInQ.Builder setEgressTpid(int egressTpid) {
+        this.egressTpid = egressTpid;
+        this.egressTpidSet = true;
+        return this;
+    }
+    @Override
+    public int getEgressVlanId() {
+        return egressVlanId;
+    }
+
+    @Override
+    public OFBsnVportQInQ.Builder setEgressVlanId(int egressVlanId) {
+        this.egressVlanId = egressVlanId;
+        this.egressVlanIdSet = true;
+        return this;
+    }
+    @Override
+    public String getIfName() {
+        return ifName;
+    }
+
+    @Override
+    public OFBsnVportQInQ.Builder setIfName(String ifName) {
+        this.ifName = ifName;
+        this.ifNameSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+
+
+        @Override
+        public OFBsnVportQInQ build() {
+                long portNo = this.portNoSet ? this.portNo : parentMessage.portNo;
+                int ingressTpid = this.ingressTpidSet ? this.ingressTpid : parentMessage.ingressTpid;
+                int ingressVlanId = this.ingressVlanIdSet ? this.ingressVlanId : parentMessage.ingressVlanId;
+                int egressTpid = this.egressTpidSet ? this.egressTpid : parentMessage.egressTpid;
+                int egressVlanId = this.egressVlanIdSet ? this.egressVlanId : parentMessage.egressVlanId;
+                String ifName = this.ifNameSet ? this.ifName : parentMessage.ifName;
+                if(ifName == null)
+                    throw new NullPointerException("Property ifName must not be null");
+
+                //
+                return new OFBsnVportQInQVer10(
+                    portNo,
+                    ingressTpid,
+                    ingressVlanId,
+                    egressTpid,
+                    egressVlanId,
+                    ifName
+                );
+        }
+
+    }
+
+    static class Builder implements OFBsnVportQInQ.Builder {
+        // OF message fields
+        private boolean portNoSet;
+        private long portNo;
+        private boolean ingressTpidSet;
+        private int ingressTpid;
+        private boolean ingressVlanIdSet;
+        private int ingressVlanId;
+        private boolean egressTpidSet;
+        private int egressTpid;
+        private boolean egressVlanIdSet;
+        private int egressVlanId;
+        private boolean ifNameSet;
+        private String ifName;
+
+    @Override
+    public int getType() {
+        return 0x0;
+    }
+
+    @Override
+    public long getPortNo() {
+        return portNo;
+    }
+
+    @Override
+    public OFBsnVportQInQ.Builder setPortNo(long portNo) {
+        this.portNo = portNo;
+        this.portNoSet = true;
+        return this;
+    }
+    @Override
+    public int getIngressTpid() {
+        return ingressTpid;
+    }
+
+    @Override
+    public OFBsnVportQInQ.Builder setIngressTpid(int ingressTpid) {
+        this.ingressTpid = ingressTpid;
+        this.ingressTpidSet = true;
+        return this;
+    }
+    @Override
+    public int getIngressVlanId() {
+        return ingressVlanId;
+    }
+
+    @Override
+    public OFBsnVportQInQ.Builder setIngressVlanId(int ingressVlanId) {
+        this.ingressVlanId = ingressVlanId;
+        this.ingressVlanIdSet = true;
+        return this;
+    }
+    @Override
+    public int getEgressTpid() {
+        return egressTpid;
+    }
+
+    @Override
+    public OFBsnVportQInQ.Builder setEgressTpid(int egressTpid) {
+        this.egressTpid = egressTpid;
+        this.egressTpidSet = true;
+        return this;
+    }
+    @Override
+    public int getEgressVlanId() {
+        return egressVlanId;
+    }
+
+    @Override
+    public OFBsnVportQInQ.Builder setEgressVlanId(int egressVlanId) {
+        this.egressVlanId = egressVlanId;
+        this.egressVlanIdSet = true;
+        return this;
+    }
+    @Override
+    public String getIfName() {
+        return ifName;
+    }
+
+    @Override
+    public OFBsnVportQInQ.Builder setIfName(String ifName) {
+        this.ifName = ifName;
+        this.ifNameSet = true;
+        return this;
+    }
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+//
+        @Override
+        public OFBsnVportQInQ build() {
+            long portNo = this.portNoSet ? this.portNo : DEFAULT_PORT_NO;
+            int ingressTpid = this.ingressTpidSet ? this.ingressTpid : DEFAULT_INGRESS_TPID;
+            int ingressVlanId = this.ingressVlanIdSet ? this.ingressVlanId : DEFAULT_INGRESS_VLAN_ID;
+            int egressTpid = this.egressTpidSet ? this.egressTpid : DEFAULT_EGRESS_TPID;
+            int egressVlanId = this.egressVlanIdSet ? this.egressVlanId : DEFAULT_EGRESS_VLAN_ID;
+            String ifName = this.ifNameSet ? this.ifName : DEFAULT_IF_NAME;
+            if(ifName == null)
+                throw new NullPointerException("Property ifName must not be null");
+
+
+            return new OFBsnVportQInQVer10(
+                    portNo,
+                    ingressTpid,
+                    ingressVlanId,
+                    egressTpid,
+                    egressVlanId,
+                    ifName
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFBsnVportQInQ> {
+        @Override
+        public OFBsnVportQInQ readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property type == 0x0
+            short type = bb.readShort();
+            if(type != (short) 0x0)
+                throw new OFParseError("Wrong type: Expected=0x0(0x0), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 32)
+                throw new OFParseError("Wrong length: Expected=32(32), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long portNo = U32.f(bb.readInt());
+            int ingressTpid = U16.f(bb.readShort());
+            int ingressVlanId = U16.f(bb.readShort());
+            int egressTpid = U16.f(bb.readShort());
+            int egressVlanId = U16.f(bb.readShort());
+            String ifName = ChannelUtils.readFixedLengthString(bb, 16);
+
+            OFBsnVportQInQVer10 bsnVportQInQVer10 = new OFBsnVportQInQVer10(
+                    portNo,
+                      ingressTpid,
+                      ingressVlanId,
+                      egressTpid,
+                      egressVlanId,
+                      ifName
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", bsnVportQInQVer10);
+            return bsnVportQInQVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFBsnVportQInQVer10Funnel FUNNEL = new OFBsnVportQInQVer10Funnel();
+    static class OFBsnVportQInQVer10Funnel implements Funnel<OFBsnVportQInQVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFBsnVportQInQVer10 message, PrimitiveSink sink) {
+            // fixed value property type = 0x0
+            sink.putShort((short) 0x0);
+            // fixed value property length = 32
+            sink.putShort((short) 0x20);
+            sink.putLong(message.portNo);
+            sink.putInt(message.ingressTpid);
+            sink.putInt(message.ingressVlanId);
+            sink.putInt(message.egressTpid);
+            sink.putInt(message.egressVlanId);
+            sink.putUnencodedChars(message.ifName);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFBsnVportQInQVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFBsnVportQInQVer10 message) {
+            // fixed value property type = 0x0
+            bb.writeShort((short) 0x0);
+            // fixed value property length = 32
+            bb.writeShort((short) 0x20);
+            bb.writeInt(U32.t(message.portNo));
+            bb.writeShort(U16.t(message.ingressTpid));
+            bb.writeShort(U16.t(message.ingressVlanId));
+            bb.writeShort(U16.t(message.egressTpid));
+            bb.writeShort(U16.t(message.egressVlanId));
+            ChannelUtils.writeFixedLengthString(bb, message.ifName, 16);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFBsnVportQInQVer10(");
+        b.append("portNo=").append(portNo);
+        b.append(", ");
+        b.append("ingressTpid=").append(ingressTpid);
+        b.append(", ");
+        b.append("ingressVlanId=").append(ingressVlanId);
+        b.append(", ");
+        b.append("egressTpid=").append(egressTpid);
+        b.append(", ");
+        b.append("egressVlanId=").append(egressVlanId);
+        b.append(", ");
+        b.append("ifName=").append(ifName);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFBsnVportQInQVer10 other = (OFBsnVportQInQVer10) obj;
+
+        if( portNo != other.portNo)
+            return false;
+        if( ingressTpid != other.ingressTpid)
+            return false;
+        if( ingressVlanId != other.ingressVlanId)
+            return false;
+        if( egressTpid != other.egressTpid)
+            return false;
+        if( egressVlanId != other.egressVlanId)
+            return false;
+        if (ifName == null) {
+            if (other.ifName != null)
+                return false;
+        } else if (!ifName.equals(other.ifName))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (portNo ^ (portNo >>> 32));
+        result = prime * result + ingressTpid;
+        result = prime * result + ingressVlanId;
+        result = prime * result + egressTpid;
+        result = prime * result + egressVlanId;
+        result = prime * result + ((ifName == null) ? 0 : ifName.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportStatusSerializerVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportStatusSerializerVer10.java
new file mode 100644
index 0000000..c4aa654
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportStatusSerializerVer10.java
@@ -0,0 +1,74 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const_serializer.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.projectfloodlight.openflow.protocol.OFBsnVportStatus;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+
+public class OFBsnVportStatusSerializerVer10 {
+
+    public final static short BSN_VPORT_STATUS_OK_VAL = (short) 0x0;
+    public final static short BSN_VPORT_STATUS_FAILED_VAL = (short) 0x1;
+
+    public static OFBsnVportStatus readFrom(ChannelBuffer bb) throws OFParseError {
+        try {
+            return ofWireValue(U8.f(bb.readByte()));
+        } catch (IllegalArgumentException e) {
+            throw new OFParseError(e);
+        }
+    }
+
+    public static void writeTo(ChannelBuffer bb, OFBsnVportStatus e) {
+        bb.writeByte(U8.t(toWireValue(e)));
+    }
+
+    public static void putTo(OFBsnVportStatus e, PrimitiveSink sink) {
+        sink.putShort(toWireValue(e));
+    }
+
+    public static OFBsnVportStatus ofWireValue(short val) {
+        switch(val) {
+            case BSN_VPORT_STATUS_OK_VAL:
+                return OFBsnVportStatus.BSN_VPORT_STATUS_OK;
+            case BSN_VPORT_STATUS_FAILED_VAL:
+                return OFBsnVportStatus.BSN_VPORT_STATUS_FAILED;
+            default:
+                throw new IllegalArgumentException("Illegal wire value for type OFBsnVportStatus in version 1.0: " + val);
+        }
+    }
+
+
+    public static short toWireValue(OFBsnVportStatus e) {
+        switch(e) {
+            case BSN_VPORT_STATUS_OK:
+                return BSN_VPORT_STATUS_OK_VAL;
+            case BSN_VPORT_STATUS_FAILED:
+                return BSN_VPORT_STATUS_FAILED_VAL;
+            default:
+                throw new IllegalArgumentException("Illegal enum value for type OFBsnVportStatus in version 1.0: " + e);
+        }
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportVer10.java
new file mode 100644
index 0000000..95e9682
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFBsnVportVer10.java
@@ -0,0 +1,56 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_virtual_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+abstract class OFBsnVportVer10 {
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 4;
+
+
+    public final static OFBsnVportVer10.Reader READER = new Reader();
+
+    static class Reader implements OFMessageReader<OFBsnVport> {
+        @Override
+        public OFBsnVport readFrom(ChannelBuffer bb) throws OFParseError {
+            if(bb.readableBytes() < MINIMUM_LENGTH)
+                return null;
+            int start = bb.readerIndex();
+            short type = bb.readShort();
+            bb.readerIndex(start);
+            switch(type) {
+               case (short) 0x1:
+                   // discriminator value 0x1=0x1 for class OFBsnVportL2GreVer10
+                   return OFBsnVportL2GreVer10.READER.readFrom(bb);
+               case (short) 0x0:
+                   // discriminator value 0x0=0x0 for class OFBsnVportQInQVer10
+                   return OFBsnVportQInQVer10.READER.readFrom(bb);
+               default:
+                   throw new OFParseError("Unknown value for discriminator type of class OFBsnVportVer10: " + type);
+            }
+        }
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFCapabilitiesSerializerVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFCapabilitiesSerializerVer10.java
new file mode 100644
index 0000000..6bac973
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFCapabilitiesSerializerVer10.java
@@ -0,0 +1,120 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const_set_serializer.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.projectfloodlight.openflow.protocol.OFCapabilities;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import java.util.EnumSet;
+import java.util.Collections;
+
+
+public class OFCapabilitiesSerializerVer10 {
+
+    public final static int FLOW_STATS_VAL = 0x1;
+    public final static int TABLE_STATS_VAL = 0x2;
+    public final static int PORT_STATS_VAL = 0x4;
+    public final static int STP_VAL = 0x8;
+    public final static int RESERVED_VAL = 0x10;
+    public final static int IP_REASM_VAL = 0x20;
+    public final static int QUEUE_STATS_VAL = 0x40;
+    public final static int ARP_MATCH_IP_VAL = 0x80;
+
+    public static Set<OFCapabilities> readFrom(ChannelBuffer bb) throws OFParseError {
+        try {
+            return ofWireValue(bb.readInt());
+        } catch (IllegalArgumentException e) {
+            throw new OFParseError(e);
+        }
+    }
+
+    public static void writeTo(ChannelBuffer bb, Set<OFCapabilities> set) {
+        bb.writeInt(toWireValue(set));
+    }
+
+    public static void putTo(Set<OFCapabilities> set, PrimitiveSink sink) {
+        sink.putInt(toWireValue(set));
+    }
+
+
+    public static Set<OFCapabilities> ofWireValue(int val) {
+        EnumSet<OFCapabilities> set = EnumSet.noneOf(OFCapabilities.class);
+
+        if((val & FLOW_STATS_VAL) != 0)
+            set.add(OFCapabilities.FLOW_STATS);
+        if((val & TABLE_STATS_VAL) != 0)
+            set.add(OFCapabilities.TABLE_STATS);
+        if((val & PORT_STATS_VAL) != 0)
+            set.add(OFCapabilities.PORT_STATS);
+        if((val & STP_VAL) != 0)
+            set.add(OFCapabilities.STP);
+        if((val & RESERVED_VAL) != 0)
+            set.add(OFCapabilities.RESERVED);
+        if((val & IP_REASM_VAL) != 0)
+            set.add(OFCapabilities.IP_REASM);
+        if((val & QUEUE_STATS_VAL) != 0)
+            set.add(OFCapabilities.QUEUE_STATS);
+        if((val & ARP_MATCH_IP_VAL) != 0)
+            set.add(OFCapabilities.ARP_MATCH_IP);
+        return Collections.unmodifiableSet(set);
+    }
+
+    public static int toWireValue(Set<OFCapabilities> set) {
+        int wireValue = 0;
+
+        for(OFCapabilities e: set) {
+            switch(e) {
+                case FLOW_STATS:
+                    wireValue |= FLOW_STATS_VAL;
+                    break;
+                case TABLE_STATS:
+                    wireValue |= TABLE_STATS_VAL;
+                    break;
+                case PORT_STATS:
+                    wireValue |= PORT_STATS_VAL;
+                    break;
+                case STP:
+                    wireValue |= STP_VAL;
+                    break;
+                case RESERVED:
+                    wireValue |= RESERVED_VAL;
+                    break;
+                case IP_REASM:
+                    wireValue |= IP_REASM_VAL;
+                    break;
+                case QUEUE_STATS:
+                    wireValue |= QUEUE_STATS_VAL;
+                    break;
+                case ARP_MATCH_IP:
+                    wireValue |= ARP_MATCH_IP_VAL;
+                    break;
+                default:
+                    throw new IllegalArgumentException("Illegal enum value for type OFCapabilities in version 1.0: " + e);
+            }
+        }
+        return wireValue;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFConfigFlagsSerializerVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFConfigFlagsSerializerVer10.java
new file mode 100644
index 0000000..bd45beb
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFConfigFlagsSerializerVer10.java
@@ -0,0 +1,91 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const_set_serializer.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.projectfloodlight.openflow.protocol.OFConfigFlags;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import java.util.EnumSet;
+import java.util.Collections;
+
+
+public class OFConfigFlagsSerializerVer10 {
+
+    public final static short FRAG_NORMAL_VAL = (short) 0x0;
+    public final static short FRAG_DROP_VAL = (short) 0x1;
+    public final static short FRAG_REASM_VAL = (short) 0x2;
+    public final static short FRAG_MASK_VAL = (short) 0x3;
+
+    public static Set<OFConfigFlags> readFrom(ChannelBuffer bb) throws OFParseError {
+        try {
+            return ofWireValue(bb.readShort());
+        } catch (IllegalArgumentException e) {
+            throw new OFParseError(e);
+        }
+    }
+
+    public static void writeTo(ChannelBuffer bb, Set<OFConfigFlags> set) {
+        bb.writeShort(toWireValue(set));
+    }
+
+    public static void putTo(Set<OFConfigFlags> set, PrimitiveSink sink) {
+        sink.putShort(toWireValue(set));
+    }
+
+
+    public static Set<OFConfigFlags> ofWireValue(short val) {
+        EnumSet<OFConfigFlags> set = EnumSet.noneOf(OFConfigFlags.class);
+
+        if((val & FRAG_MASK_VAL) == FRAG_NORMAL_VAL)
+            set.add(OFConfigFlags.FRAG_NORMAL);
+        else if((val & FRAG_MASK_VAL) == FRAG_DROP_VAL)
+            set.add(OFConfigFlags.FRAG_DROP);
+        else if((val & FRAG_MASK_VAL) == FRAG_REASM_VAL)
+            set.add(OFConfigFlags.FRAG_REASM);
+        return Collections.unmodifiableSet(set);
+    }
+
+    public static short toWireValue(Set<OFConfigFlags> set) {
+        short wireValue = 0;
+
+        for(OFConfigFlags e: set) {
+            switch(e) {
+                case FRAG_NORMAL:
+                    wireValue |= FRAG_NORMAL_VAL;
+                    break;
+                case FRAG_DROP:
+                    wireValue |= FRAG_DROP_VAL;
+                    break;
+                case FRAG_REASM:
+                    wireValue |= FRAG_REASM_VAL;
+                    break;
+                default:
+                    throw new IllegalArgumentException("Illegal enum value for type OFConfigFlags in version 1.0: " + e);
+            }
+        }
+        return wireValue;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFDescStatsReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFDescStatsReplyVer10.java
new file mode 100644
index 0000000..ed1bf76
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFDescStatsReplyVer10.java
@@ -0,0 +1,616 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import com.google.common.collect.ImmutableSet;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFDescStatsReplyVer10 implements OFDescStatsReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFDescStatsReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 1068;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static Set<OFStatsReplyFlags> DEFAULT_FLAGS = ImmutableSet.<OFStatsReplyFlags>of();
+        private final static String DEFAULT_MFR_DESC = "";
+        private final static String DEFAULT_HW_DESC = "";
+        private final static String DEFAULT_SW_DESC = "";
+        private final static String DEFAULT_SERIAL_NUM = "";
+        private final static String DEFAULT_DP_DESC = "";
+
+    // OF message fields
+    private final long xid;
+    private final Set<OFStatsReplyFlags> flags;
+    private final String mfrDesc;
+    private final String hwDesc;
+    private final String swDesc;
+    private final String serialNum;
+    private final String dpDesc;
+//
+    // Immutable default instance
+    final static OFDescStatsReplyVer10 DEFAULT = new OFDescStatsReplyVer10(
+        DEFAULT_XID, DEFAULT_FLAGS, DEFAULT_MFR_DESC, DEFAULT_HW_DESC, DEFAULT_SW_DESC, DEFAULT_SERIAL_NUM, DEFAULT_DP_DESC
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFDescStatsReplyVer10(long xid, Set<OFStatsReplyFlags> flags, String mfrDesc, String hwDesc, String swDesc, String serialNum, String dpDesc) {
+        this.xid = xid;
+        this.flags = flags;
+        this.mfrDesc = mfrDesc;
+        this.hwDesc = hwDesc;
+        this.swDesc = swDesc;
+        this.serialNum = serialNum;
+        this.dpDesc = dpDesc;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.STATS_REPLY;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFStatsType getStatsType() {
+        return OFStatsType.DESC;
+    }
+
+    @Override
+    public Set<OFStatsReplyFlags> getFlags() {
+        return flags;
+    }
+
+    @Override
+    public String getMfrDesc() {
+        return mfrDesc;
+    }
+
+    @Override
+    public String getHwDesc() {
+        return hwDesc;
+    }
+
+    @Override
+    public String getSwDesc() {
+        return swDesc;
+    }
+
+    @Override
+    public String getSerialNum() {
+        return serialNum;
+    }
+
+    @Override
+    public String getDpDesc() {
+        return dpDesc;
+    }
+
+
+
+    public OFDescStatsReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFDescStatsReply.Builder {
+        final OFDescStatsReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean flagsSet;
+        private Set<OFStatsReplyFlags> flags;
+        private boolean mfrDescSet;
+        private String mfrDesc;
+        private boolean hwDescSet;
+        private String hwDesc;
+        private boolean swDescSet;
+        private String swDesc;
+        private boolean serialNumSet;
+        private String serialNum;
+        private boolean dpDescSet;
+        private String dpDesc;
+
+        BuilderWithParent(OFDescStatsReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.STATS_REPLY;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFDescStatsReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public OFStatsType getStatsType() {
+        return OFStatsType.DESC;
+    }
+
+    @Override
+    public Set<OFStatsReplyFlags> getFlags() {
+        return flags;
+    }
+
+    @Override
+    public OFDescStatsReply.Builder setFlags(Set<OFStatsReplyFlags> flags) {
+        this.flags = flags;
+        this.flagsSet = true;
+        return this;
+    }
+    @Override
+    public String getMfrDesc() {
+        return mfrDesc;
+    }
+
+    @Override
+    public OFDescStatsReply.Builder setMfrDesc(String mfrDesc) {
+        this.mfrDesc = mfrDesc;
+        this.mfrDescSet = true;
+        return this;
+    }
+    @Override
+    public String getHwDesc() {
+        return hwDesc;
+    }
+
+    @Override
+    public OFDescStatsReply.Builder setHwDesc(String hwDesc) {
+        this.hwDesc = hwDesc;
+        this.hwDescSet = true;
+        return this;
+    }
+    @Override
+    public String getSwDesc() {
+        return swDesc;
+    }
+
+    @Override
+    public OFDescStatsReply.Builder setSwDesc(String swDesc) {
+        this.swDesc = swDesc;
+        this.swDescSet = true;
+        return this;
+    }
+    @Override
+    public String getSerialNum() {
+        return serialNum;
+    }
+
+    @Override
+    public OFDescStatsReply.Builder setSerialNum(String serialNum) {
+        this.serialNum = serialNum;
+        this.serialNumSet = true;
+        return this;
+    }
+    @Override
+    public String getDpDesc() {
+        return dpDesc;
+    }
+
+    @Override
+    public OFDescStatsReply.Builder setDpDesc(String dpDesc) {
+        this.dpDesc = dpDesc;
+        this.dpDescSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFDescStatsReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                Set<OFStatsReplyFlags> flags = this.flagsSet ? this.flags : parentMessage.flags;
+                if(flags == null)
+                    throw new NullPointerException("Property flags must not be null");
+                String mfrDesc = this.mfrDescSet ? this.mfrDesc : parentMessage.mfrDesc;
+                if(mfrDesc == null)
+                    throw new NullPointerException("Property mfrDesc must not be null");
+                String hwDesc = this.hwDescSet ? this.hwDesc : parentMessage.hwDesc;
+                if(hwDesc == null)
+                    throw new NullPointerException("Property hwDesc must not be null");
+                String swDesc = this.swDescSet ? this.swDesc : parentMessage.swDesc;
+                if(swDesc == null)
+                    throw new NullPointerException("Property swDesc must not be null");
+                String serialNum = this.serialNumSet ? this.serialNum : parentMessage.serialNum;
+                if(serialNum == null)
+                    throw new NullPointerException("Property serialNum must not be null");
+                String dpDesc = this.dpDescSet ? this.dpDesc : parentMessage.dpDesc;
+                if(dpDesc == null)
+                    throw new NullPointerException("Property dpDesc must not be null");
+
+                //
+                return new OFDescStatsReplyVer10(
+                    xid,
+                    flags,
+                    mfrDesc,
+                    hwDesc,
+                    swDesc,
+                    serialNum,
+                    dpDesc
+                );
+        }
+
+    }
+
+    static class Builder implements OFDescStatsReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean flagsSet;
+        private Set<OFStatsReplyFlags> flags;
+        private boolean mfrDescSet;
+        private String mfrDesc;
+        private boolean hwDescSet;
+        private String hwDesc;
+        private boolean swDescSet;
+        private String swDesc;
+        private boolean serialNumSet;
+        private String serialNum;
+        private boolean dpDescSet;
+        private String dpDesc;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.STATS_REPLY;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFDescStatsReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public OFStatsType getStatsType() {
+        return OFStatsType.DESC;
+    }
+
+    @Override
+    public Set<OFStatsReplyFlags> getFlags() {
+        return flags;
+    }
+
+    @Override
+    public OFDescStatsReply.Builder setFlags(Set<OFStatsReplyFlags> flags) {
+        this.flags = flags;
+        this.flagsSet = true;
+        return this;
+    }
+    @Override
+    public String getMfrDesc() {
+        return mfrDesc;
+    }
+
+    @Override
+    public OFDescStatsReply.Builder setMfrDesc(String mfrDesc) {
+        this.mfrDesc = mfrDesc;
+        this.mfrDescSet = true;
+        return this;
+    }
+    @Override
+    public String getHwDesc() {
+        return hwDesc;
+    }
+
+    @Override
+    public OFDescStatsReply.Builder setHwDesc(String hwDesc) {
+        this.hwDesc = hwDesc;
+        this.hwDescSet = true;
+        return this;
+    }
+    @Override
+    public String getSwDesc() {
+        return swDesc;
+    }
+
+    @Override
+    public OFDescStatsReply.Builder setSwDesc(String swDesc) {
+        this.swDesc = swDesc;
+        this.swDescSet = true;
+        return this;
+    }
+    @Override
+    public String getSerialNum() {
+        return serialNum;
+    }
+
+    @Override
+    public OFDescStatsReply.Builder setSerialNum(String serialNum) {
+        this.serialNum = serialNum;
+        this.serialNumSet = true;
+        return this;
+    }
+    @Override
+    public String getDpDesc() {
+        return dpDesc;
+    }
+
+    @Override
+    public OFDescStatsReply.Builder setDpDesc(String dpDesc) {
+        this.dpDesc = dpDesc;
+        this.dpDescSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFDescStatsReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            Set<OFStatsReplyFlags> flags = this.flagsSet ? this.flags : DEFAULT_FLAGS;
+            if(flags == null)
+                throw new NullPointerException("Property flags must not be null");
+            String mfrDesc = this.mfrDescSet ? this.mfrDesc : DEFAULT_MFR_DESC;
+            if(mfrDesc == null)
+                throw new NullPointerException("Property mfrDesc must not be null");
+            String hwDesc = this.hwDescSet ? this.hwDesc : DEFAULT_HW_DESC;
+            if(hwDesc == null)
+                throw new NullPointerException("Property hwDesc must not be null");
+            String swDesc = this.swDescSet ? this.swDesc : DEFAULT_SW_DESC;
+            if(swDesc == null)
+                throw new NullPointerException("Property swDesc must not be null");
+            String serialNum = this.serialNumSet ? this.serialNum : DEFAULT_SERIAL_NUM;
+            if(serialNum == null)
+                throw new NullPointerException("Property serialNum must not be null");
+            String dpDesc = this.dpDescSet ? this.dpDesc : DEFAULT_DP_DESC;
+            if(dpDesc == null)
+                throw new NullPointerException("Property dpDesc must not be null");
+
+
+            return new OFDescStatsReplyVer10(
+                    xid,
+                    flags,
+                    mfrDesc,
+                    hwDesc,
+                    swDesc,
+                    serialNum,
+                    dpDesc
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFDescStatsReply> {
+        @Override
+        public OFDescStatsReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 17
+            byte type = bb.readByte();
+            if(type != (byte) 0x11)
+                throw new OFParseError("Wrong type: Expected=OFType.STATS_REPLY(17), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 1068)
+                throw new OFParseError("Wrong length: Expected=1068(1068), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property statsType == 0
+            short statsType = bb.readShort();
+            if(statsType != (short) 0x0)
+                throw new OFParseError("Wrong statsType: Expected=OFStatsType.DESC(0), got="+statsType);
+            Set<OFStatsReplyFlags> flags = OFStatsReplyFlagsSerializerVer10.readFrom(bb);
+            String mfrDesc = ChannelUtils.readFixedLengthString(bb, 256);
+            String hwDesc = ChannelUtils.readFixedLengthString(bb, 256);
+            String swDesc = ChannelUtils.readFixedLengthString(bb, 256);
+            String serialNum = ChannelUtils.readFixedLengthString(bb, 32);
+            String dpDesc = ChannelUtils.readFixedLengthString(bb, 256);
+
+            OFDescStatsReplyVer10 descStatsReplyVer10 = new OFDescStatsReplyVer10(
+                    xid,
+                      flags,
+                      mfrDesc,
+                      hwDesc,
+                      swDesc,
+                      serialNum,
+                      dpDesc
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", descStatsReplyVer10);
+            return descStatsReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFDescStatsReplyVer10Funnel FUNNEL = new OFDescStatsReplyVer10Funnel();
+    static class OFDescStatsReplyVer10Funnel implements Funnel<OFDescStatsReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFDescStatsReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 17
+            sink.putByte((byte) 0x11);
+            // fixed value property length = 1068
+            sink.putShort((short) 0x42c);
+            sink.putLong(message.xid);
+            // fixed value property statsType = 0
+            sink.putShort((short) 0x0);
+            OFStatsReplyFlagsSerializerVer10.putTo(message.flags, sink);
+            sink.putUnencodedChars(message.mfrDesc);
+            sink.putUnencodedChars(message.hwDesc);
+            sink.putUnencodedChars(message.swDesc);
+            sink.putUnencodedChars(message.serialNum);
+            sink.putUnencodedChars(message.dpDesc);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFDescStatsReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFDescStatsReplyVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 17
+            bb.writeByte((byte) 0x11);
+            // fixed value property length = 1068
+            bb.writeShort((short) 0x42c);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property statsType = 0
+            bb.writeShort((short) 0x0);
+            OFStatsReplyFlagsSerializerVer10.writeTo(bb, message.flags);
+            ChannelUtils.writeFixedLengthString(bb, message.mfrDesc, 256);
+            ChannelUtils.writeFixedLengthString(bb, message.hwDesc, 256);
+            ChannelUtils.writeFixedLengthString(bb, message.swDesc, 256);
+            ChannelUtils.writeFixedLengthString(bb, message.serialNum, 32);
+            ChannelUtils.writeFixedLengthString(bb, message.dpDesc, 256);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFDescStatsReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("flags=").append(flags);
+        b.append(", ");
+        b.append("mfrDesc=").append(mfrDesc);
+        b.append(", ");
+        b.append("hwDesc=").append(hwDesc);
+        b.append(", ");
+        b.append("swDesc=").append(swDesc);
+        b.append(", ");
+        b.append("serialNum=").append(serialNum);
+        b.append(", ");
+        b.append("dpDesc=").append(dpDesc);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFDescStatsReplyVer10 other = (OFDescStatsReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if (flags == null) {
+            if (other.flags != null)
+                return false;
+        } else if (!flags.equals(other.flags))
+            return false;
+        if (mfrDesc == null) {
+            if (other.mfrDesc != null)
+                return false;
+        } else if (!mfrDesc.equals(other.mfrDesc))
+            return false;
+        if (hwDesc == null) {
+            if (other.hwDesc != null)
+                return false;
+        } else if (!hwDesc.equals(other.hwDesc))
+            return false;
+        if (swDesc == null) {
+            if (other.swDesc != null)
+                return false;
+        } else if (!swDesc.equals(other.swDesc))
+            return false;
+        if (serialNum == null) {
+            if (other.serialNum != null)
+                return false;
+        } else if (!serialNum.equals(other.serialNum))
+            return false;
+        if (dpDesc == null) {
+            if (other.dpDesc != null)
+                return false;
+        } else if (!dpDesc.equals(other.dpDesc))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + ((flags == null) ? 0 : flags.hashCode());
+        result = prime * result + ((mfrDesc == null) ? 0 : mfrDesc.hashCode());
+        result = prime * result + ((hwDesc == null) ? 0 : hwDesc.hashCode());
+        result = prime * result + ((swDesc == null) ? 0 : swDesc.hashCode());
+        result = prime * result + ((serialNum == null) ? 0 : serialNum.hashCode());
+        result = prime * result + ((dpDesc == null) ? 0 : dpDesc.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFDescStatsRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFDescStatsRequestVer10.java
new file mode 100644
index 0000000..71ac331
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFDescStatsRequestVer10.java
@@ -0,0 +1,346 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import com.google.common.collect.ImmutableSet;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+
+class OFDescStatsRequestVer10 implements OFDescStatsRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFDescStatsRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int LENGTH = 12;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static Set<OFStatsRequestFlags> DEFAULT_FLAGS = ImmutableSet.<OFStatsRequestFlags>of();
+
+    // OF message fields
+    private final long xid;
+    private final Set<OFStatsRequestFlags> flags;
+//
+    // Immutable default instance
+    final static OFDescStatsRequestVer10 DEFAULT = new OFDescStatsRequestVer10(
+        DEFAULT_XID, DEFAULT_FLAGS
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFDescStatsRequestVer10(long xid, Set<OFStatsRequestFlags> flags) {
+        this.xid = xid;
+        this.flags = flags;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.STATS_REQUEST;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFStatsType getStatsType() {
+        return OFStatsType.DESC;
+    }
+
+    @Override
+    public Set<OFStatsRequestFlags> getFlags() {
+        return flags;
+    }
+
+
+
+    public OFDescStatsRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFDescStatsRequest.Builder {
+        final OFDescStatsRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean flagsSet;
+        private Set<OFStatsRequestFlags> flags;
+
+        BuilderWithParent(OFDescStatsRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.STATS_REQUEST;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFDescStatsRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public OFStatsType getStatsType() {
+        return OFStatsType.DESC;
+    }
+
+    @Override
+    public Set<OFStatsRequestFlags> getFlags() {
+        return flags;
+    }
+
+    @Override
+    public OFDescStatsRequest.Builder setFlags(Set<OFStatsRequestFlags> flags) {
+        this.flags = flags;
+        this.flagsSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFDescStatsRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                Set<OFStatsRequestFlags> flags = this.flagsSet ? this.flags : parentMessage.flags;
+                if(flags == null)
+                    throw new NullPointerException("Property flags must not be null");
+
+                //
+                return new OFDescStatsRequestVer10(
+                    xid,
+                    flags
+                );
+        }
+
+    }
+
+    static class Builder implements OFDescStatsRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean flagsSet;
+        private Set<OFStatsRequestFlags> flags;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.STATS_REQUEST;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFDescStatsRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public OFStatsType getStatsType() {
+        return OFStatsType.DESC;
+    }
+
+    @Override
+    public Set<OFStatsRequestFlags> getFlags() {
+        return flags;
+    }
+
+    @Override
+    public OFDescStatsRequest.Builder setFlags(Set<OFStatsRequestFlags> flags) {
+        this.flags = flags;
+        this.flagsSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFDescStatsRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            Set<OFStatsRequestFlags> flags = this.flagsSet ? this.flags : DEFAULT_FLAGS;
+            if(flags == null)
+                throw new NullPointerException("Property flags must not be null");
+
+
+            return new OFDescStatsRequestVer10(
+                    xid,
+                    flags
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFDescStatsRequest> {
+        @Override
+        public OFDescStatsRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 16
+            byte type = bb.readByte();
+            if(type != (byte) 0x10)
+                throw new OFParseError("Wrong type: Expected=OFType.STATS_REQUEST(16), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length != 12)
+                throw new OFParseError("Wrong length: Expected=12(12), got="+length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            // fixed value property statsType == 0
+            short statsType = bb.readShort();
+            if(statsType != (short) 0x0)
+                throw new OFParseError("Wrong statsType: Expected=OFStatsType.DESC(0), got="+statsType);
+            Set<OFStatsRequestFlags> flags = OFStatsRequestFlagsSerializerVer10.readFrom(bb);
+
+            OFDescStatsRequestVer10 descStatsRequestVer10 = new OFDescStatsRequestVer10(
+                    xid,
+                      flags
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", descStatsRequestVer10);
+            return descStatsRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFDescStatsRequestVer10Funnel FUNNEL = new OFDescStatsRequestVer10Funnel();
+    static class OFDescStatsRequestVer10Funnel implements Funnel<OFDescStatsRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFDescStatsRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 16
+            sink.putByte((byte) 0x10);
+            // fixed value property length = 12
+            sink.putShort((short) 0xc);
+            sink.putLong(message.xid);
+            // fixed value property statsType = 0
+            sink.putShort((short) 0x0);
+            OFStatsRequestFlagsSerializerVer10.putTo(message.flags, sink);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFDescStatsRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFDescStatsRequestVer10 message) {
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 16
+            bb.writeByte((byte) 0x10);
+            // fixed value property length = 12
+            bb.writeShort((short) 0xc);
+            bb.writeInt(U32.t(message.xid));
+            // fixed value property statsType = 0
+            bb.writeShort((short) 0x0);
+            OFStatsRequestFlagsSerializerVer10.writeTo(bb, message.flags);
+
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFDescStatsRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("flags=").append(flags);
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFDescStatsRequestVer10 other = (OFDescStatsRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if (flags == null) {
+            if (other.flags != null)
+                return false;
+        } else if (!flags.equals(other.flags))
+            return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + ((flags == null) ? 0 : flags.hashCode());
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFEchoReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFEchoReplyVer10.java
new file mode 100644
index 0000000..260030c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFEchoReplyVer10.java
@@ -0,0 +1,325 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+import java.util.Arrays;
+
+class OFEchoReplyVer10 implements OFEchoReply {
+    private static final Logger logger = LoggerFactory.getLogger(OFEchoReplyVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 8;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static byte[] DEFAULT_DATA = new byte[0];
+
+    // OF message fields
+    private final long xid;
+    private final byte[] data;
+//
+    // Immutable default instance
+    final static OFEchoReplyVer10 DEFAULT = new OFEchoReplyVer10(
+        DEFAULT_XID, DEFAULT_DATA
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFEchoReplyVer10(long xid, byte[] data) {
+        this.xid = xid;
+        this.data = data;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.ECHO_REPLY;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+
+
+    public OFEchoReply.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFEchoReply.Builder {
+        final OFEchoReplyVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean dataSet;
+        private byte[] data;
+
+        BuilderWithParent(OFEchoReplyVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.ECHO_REPLY;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFEchoReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+    @Override
+    public OFEchoReply.Builder setData(byte[] data) {
+        this.data = data;
+        this.dataSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFEchoReply build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                byte[] data = this.dataSet ? this.data : parentMessage.data;
+                if(data == null)
+                    throw new NullPointerException("Property data must not be null");
+
+                //
+                return new OFEchoReplyVer10(
+                    xid,
+                    data
+                );
+        }
+
+    }
+
+    static class Builder implements OFEchoReply.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean dataSet;
+        private byte[] data;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.ECHO_REPLY;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFEchoReply.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+    @Override
+    public OFEchoReply.Builder setData(byte[] data) {
+        this.data = data;
+        this.dataSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFEchoReply build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            byte[] data = this.dataSet ? this.data : DEFAULT_DATA;
+            if(data == null)
+                throw new NullPointerException("Property data must not be null");
+
+
+            return new OFEchoReplyVer10(
+                    xid,
+                    data
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFEchoReply> {
+        @Override
+        public OFEchoReply readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 3
+            byte type = bb.readByte();
+            if(type != (byte) 0x3)
+                throw new OFParseError("Wrong type: Expected=OFType.ECHO_REPLY(3), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            byte[] data = ChannelUtils.readBytes(bb, length - (bb.readerIndex() - start));
+
+            OFEchoReplyVer10 echoReplyVer10 = new OFEchoReplyVer10(
+                    xid,
+                      data
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", echoReplyVer10);
+            return echoReplyVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFEchoReplyVer10Funnel FUNNEL = new OFEchoReplyVer10Funnel();
+    static class OFEchoReplyVer10Funnel implements Funnel<OFEchoReplyVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFEchoReplyVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 3
+            sink.putByte((byte) 0x3);
+            // FIXME: skip funnel of length
+            sink.putLong(message.xid);
+            sink.putBytes(message.data);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFEchoReplyVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFEchoReplyVer10 message) {
+            int startIndex = bb.writerIndex();
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 3
+            bb.writeByte((byte) 0x3);
+            // length is length of variable message, will be updated at the end
+            int lengthIndex = bb.writerIndex();
+            bb.writeShort(U16.t(0));
+
+            bb.writeInt(U32.t(message.xid));
+            bb.writeBytes(message.data);
+
+            // update length field
+            int length = bb.writerIndex() - startIndex;
+            bb.setShort(lengthIndex, length);
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFEchoReplyVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("data=").append(Arrays.toString(data));
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFEchoReplyVer10 other = (OFEchoReplyVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if (!Arrays.equals(data, other.data))
+                return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + Arrays.hashCode(data);
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFEchoRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFEchoRequestVer10.java
new file mode 100644
index 0000000..ee34d40
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFEchoRequestVer10.java
@@ -0,0 +1,325 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import java.util.Set;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+import com.google.common.hash.Funnel;
+import java.util.Arrays;
+
+class OFEchoRequestVer10 implements OFEchoRequest {
+    private static final Logger logger = LoggerFactory.getLogger(OFEchoRequestVer10.class);
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 8;
+
+        private final static long DEFAULT_XID = 0x0L;
+        private final static byte[] DEFAULT_DATA = new byte[0];
+
+    // OF message fields
+    private final long xid;
+    private final byte[] data;
+//
+    // Immutable default instance
+    final static OFEchoRequestVer10 DEFAULT = new OFEchoRequestVer10(
+        DEFAULT_XID, DEFAULT_DATA
+    );
+
+    // package private constructor - used by readers, builders, and factory
+    OFEchoRequestVer10(long xid, byte[] data) {
+        this.xid = xid;
+        this.data = data;
+    }
+
+    // Accessors for OF message fields
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.ECHO_REQUEST;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+
+
+    public OFEchoRequest.Builder createBuilder() {
+        return new BuilderWithParent(this);
+    }
+
+    static class BuilderWithParent implements OFEchoRequest.Builder {
+        final OFEchoRequestVer10 parentMessage;
+
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean dataSet;
+        private byte[] data;
+
+        BuilderWithParent(OFEchoRequestVer10 parentMessage) {
+            this.parentMessage = parentMessage;
+        }
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.ECHO_REQUEST;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFEchoRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+    @Override
+    public OFEchoRequest.Builder setData(byte[] data) {
+        this.data = data;
+        this.dataSet = true;
+        return this;
+    }
+
+
+        @Override
+        public OFEchoRequest build() {
+                long xid = this.xidSet ? this.xid : parentMessage.xid;
+                byte[] data = this.dataSet ? this.data : parentMessage.data;
+                if(data == null)
+                    throw new NullPointerException("Property data must not be null");
+
+                //
+                return new OFEchoRequestVer10(
+                    xid,
+                    data
+                );
+        }
+
+    }
+
+    static class Builder implements OFEchoRequest.Builder {
+        // OF message fields
+        private boolean xidSet;
+        private long xid;
+        private boolean dataSet;
+        private byte[] data;
+
+    @Override
+    public OFVersion getVersion() {
+        return OFVersion.OF_10;
+    }
+
+    @Override
+    public OFType getType() {
+        return OFType.ECHO_REQUEST;
+    }
+
+    @Override
+    public long getXid() {
+        return xid;
+    }
+
+    @Override
+    public OFEchoRequest.Builder setXid(long xid) {
+        this.xid = xid;
+        this.xidSet = true;
+        return this;
+    }
+    @Override
+    public byte[] getData() {
+        return data;
+    }
+
+    @Override
+    public OFEchoRequest.Builder setData(byte[] data) {
+        this.data = data;
+        this.dataSet = true;
+        return this;
+    }
+//
+        @Override
+        public OFEchoRequest build() {
+            long xid = this.xidSet ? this.xid : DEFAULT_XID;
+            byte[] data = this.dataSet ? this.data : DEFAULT_DATA;
+            if(data == null)
+                throw new NullPointerException("Property data must not be null");
+
+
+            return new OFEchoRequestVer10(
+                    xid,
+                    data
+                );
+        }
+
+    }
+
+
+    final static Reader READER = new Reader();
+    static class Reader implements OFMessageReader<OFEchoRequest> {
+        @Override
+        public OFEchoRequest readFrom(ChannelBuffer bb) throws OFParseError {
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 2
+            byte type = bb.readByte();
+            if(type != (byte) 0x2)
+                throw new OFParseError("Wrong type: Expected=OFType.ECHO_REQUEST(2), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            if(bb.readableBytes() + (bb.readerIndex() - start) < length) {
+                // Buffer does not have all data yet
+                bb.readerIndex(start);
+                return null;
+            }
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - length={}", length);
+            long xid = U32.f(bb.readInt());
+            byte[] data = ChannelUtils.readBytes(bb, length - (bb.readerIndex() - start));
+
+            OFEchoRequestVer10 echoRequestVer10 = new OFEchoRequestVer10(
+                    xid,
+                      data
+                    );
+            if(logger.isTraceEnabled())
+                logger.trace("readFrom - read={}", echoRequestVer10);
+            return echoRequestVer10;
+        }
+    }
+
+    public void putTo(PrimitiveSink sink) {
+        FUNNEL.funnel(this, sink);
+    }
+
+    final static OFEchoRequestVer10Funnel FUNNEL = new OFEchoRequestVer10Funnel();
+    static class OFEchoRequestVer10Funnel implements Funnel<OFEchoRequestVer10> {
+        private static final long serialVersionUID = 1L;
+        @Override
+        public void funnel(OFEchoRequestVer10 message, PrimitiveSink sink) {
+            // fixed value property version = 1
+            sink.putByte((byte) 0x1);
+            // fixed value property type = 2
+            sink.putByte((byte) 0x2);
+            // FIXME: skip funnel of length
+            sink.putLong(message.xid);
+            sink.putBytes(message.data);
+        }
+    }
+
+
+    public void writeTo(ChannelBuffer bb) {
+        WRITER.write(bb, this);
+    }
+
+    final static Writer WRITER = new Writer();
+    static class Writer implements OFMessageWriter<OFEchoRequestVer10> {
+        @Override
+        public void write(ChannelBuffer bb, OFEchoRequestVer10 message) {
+            int startIndex = bb.writerIndex();
+            // fixed value property version = 1
+            bb.writeByte((byte) 0x1);
+            // fixed value property type = 2
+            bb.writeByte((byte) 0x2);
+            // length is length of variable message, will be updated at the end
+            int lengthIndex = bb.writerIndex();
+            bb.writeShort(U16.t(0));
+
+            bb.writeInt(U32.t(message.xid));
+            bb.writeBytes(message.data);
+
+            // update length field
+            int length = bb.writerIndex() - startIndex;
+            bb.setShort(lengthIndex, length);
+
+        }
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder("OFEchoRequestVer10(");
+        b.append("xid=").append(xid);
+        b.append(", ");
+        b.append("data=").append(Arrays.toString(data));
+        b.append(")");
+        return b.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj)
+            return true;
+        if (obj == null)
+            return false;
+        if (getClass() != obj.getClass())
+            return false;
+        OFEchoRequestVer10 other = (OFEchoRequestVer10) obj;
+
+        if( xid != other.xid)
+            return false;
+        if (!Arrays.equals(data, other.data))
+                return false;
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        final int prime = 31;
+        int result = 1;
+
+        result = prime *  (int) (xid ^ (xid >>> 32));
+        result = prime * result + Arrays.hashCode(data);
+        return result;
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFErrorMsgVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFErrorMsgVer10.java
new file mode 100644
index 0000000..03ecc4b
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFErrorMsgVer10.java
@@ -0,0 +1,80 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_virtual_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+abstract class OFErrorMsgVer10 {
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 10;
+
+
+    public final static OFErrorMsgVer10.Reader READER = new Reader();
+
+    static class Reader implements OFMessageReader<OFErrorMsg> {
+        @Override
+        public OFErrorMsg readFrom(ChannelBuffer bb) throws OFParseError {
+            if(bb.readableBytes() < MINIMUM_LENGTH)
+                return null;
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 1
+            byte type = bb.readByte();
+            if(type != (byte) 0x1)
+                throw new OFParseError("Wrong type: Expected=OFType.ERROR(1), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            U32.f(bb.readInt());
+            short errType = bb.readShort();
+            bb.readerIndex(start);
+            switch(errType) {
+               case (short) 0x2:
+                   // discriminator value OFErrorType.BAD_ACTION=2 for class OFBadActionErrorMsgVer10
+                   return OFBadActionErrorMsgVer10.READER.readFrom(bb);
+               case (short) 0x1:
+                   // discriminator value OFErrorType.BAD_REQUEST=1 for class OFBadRequestErrorMsgVer10
+                   return OFBadRequestErrorMsgVer10.READER.readFrom(bb);
+               case (short) 0x3:
+                   // discriminator value OFErrorType.FLOW_MOD_FAILED=3 for class OFFlowModFailedErrorMsgVer10
+                   return OFFlowModFailedErrorMsgVer10.READER.readFrom(bb);
+               case (short) 0x0:
+                   // discriminator value OFErrorType.HELLO_FAILED=0 for class OFHelloFailedErrorMsgVer10
+                   return OFHelloFailedErrorMsgVer10.READER.readFrom(bb);
+               case (short) 0x4:
+                   // discriminator value OFErrorType.PORT_MOD_FAILED=4 for class OFPortModFailedErrorMsgVer10
+                   return OFPortModFailedErrorMsgVer10.READER.readFrom(bb);
+               case (short) 0x5:
+                   // discriminator value OFErrorType.QUEUE_OP_FAILED=5 for class OFQueueOpFailedErrorMsgVer10
+                   return OFQueueOpFailedErrorMsgVer10.READER.readFrom(bb);
+               default:
+                   throw new OFParseError("Unknown value for discriminator errType of class OFErrorMsgVer10: " + errType);
+            }
+        }
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFErrorMsgsVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFErrorMsgsVer10.java
new file mode 100644
index 0000000..bd921e9
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFErrorMsgsVer10.java
@@ -0,0 +1,106 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_factory_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+
+
+public class OFErrorMsgsVer10 implements OFErrorMsgs {
+    public final static OFErrorMsgsVer10 INSTANCE = new OFErrorMsgsVer10();
+
+    private final XidGenerator xidGenerator = XidGenerators.global();
+
+
+
+    public OFBadActionErrorMsg.Builder buildBadActionErrorMsg() {
+        return new OFBadActionErrorMsgVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBadRequestErrorMsg.Builder buildBadRequestErrorMsg() {
+        return new OFBadRequestErrorMsgVer10.Builder().setXid(nextXid());
+    }
+
+    public OFFlowModFailedErrorMsg.Builder buildFlowModFailedErrorMsg() {
+        return new OFFlowModFailedErrorMsgVer10.Builder().setXid(nextXid());
+    }
+
+    public OFHelloFailedErrorMsg.Builder buildHelloFailedErrorMsg() {
+        return new OFHelloFailedErrorMsgVer10.Builder().setXid(nextXid());
+    }
+
+    public OFPortModFailedErrorMsg.Builder buildPortModFailedErrorMsg() {
+        return new OFPortModFailedErrorMsgVer10.Builder().setXid(nextXid());
+    }
+
+    public OFQueueOpFailedErrorMsg.Builder buildQueueOpFailedErrorMsg() {
+        return new OFQueueOpFailedErrorMsgVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBadInstructionErrorMsg.Builder buildBadInstructionErrorMsg() {
+        throw new UnsupportedOperationException("OFBadInstructionErrorMsg not supported in version 1.0");
+    }
+
+    public OFBadMatchErrorMsg.Builder buildBadMatchErrorMsg() {
+        throw new UnsupportedOperationException("OFBadMatchErrorMsg not supported in version 1.0");
+    }
+
+    public OFGroupModFailedErrorMsg.Builder buildGroupModFailedErrorMsg() {
+        throw new UnsupportedOperationException("OFGroupModFailedErrorMsg not supported in version 1.0");
+    }
+
+    public OFSwitchConfigFailedErrorMsg.Builder buildSwitchConfigFailedErrorMsg() {
+        throw new UnsupportedOperationException("OFSwitchConfigFailedErrorMsg not supported in version 1.0");
+    }
+
+    public OFTableModFailedErrorMsg.Builder buildTableModFailedErrorMsg() {
+        throw new UnsupportedOperationException("OFTableModFailedErrorMsg not supported in version 1.0");
+    }
+
+    public OFExperimenterErrorMsg.Builder buildExperimenterErrorMsg() {
+        throw new UnsupportedOperationException("OFExperimenterErrorMsg not supported in version 1.0");
+    }
+
+    public OFRoleRequestFailedErrorMsg.Builder buildRoleRequestFailedErrorMsg() {
+        throw new UnsupportedOperationException("OFRoleRequestFailedErrorMsg not supported in version 1.0");
+    }
+
+    public OFMeterModFailedErrorMsg.Builder buildMeterModFailedErrorMsg() {
+        throw new UnsupportedOperationException("OFMeterModFailedErrorMsg not supported in version 1.0");
+    }
+
+    public OFTableFeaturesFailedErrorMsg.Builder buildTableFeaturesFailedErrorMsg() {
+        throw new UnsupportedOperationException("OFTableFeaturesFailedErrorMsg not supported in version 1.0");
+    }
+
+    public OFMessageReader<OFErrorMsg> getReader() {
+        return OFErrorMsgVer10.READER;
+    }
+
+    public long nextXid() {
+        return xidGenerator.nextXid();
+    }
+
+    public OFVersion getVersion() {
+            return OFVersion.OF_10;
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFErrorTypeSerializerVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFErrorTypeSerializerVer10.java
new file mode 100644
index 0000000..14e4696
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFErrorTypeSerializerVer10.java
@@ -0,0 +1,94 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template const_serializer.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.projectfloodlight.openflow.protocol.OFErrorType;
+import org.jboss.netty.buffer.ChannelBuffer;
+import com.google.common.hash.PrimitiveSink;
+
+public class OFErrorTypeSerializerVer10 {
+
+    public final static short HELLO_FAILED_VAL = (short) 0x0;
+    public final static short BAD_REQUEST_VAL = (short) 0x1;
+    public final static short BAD_ACTION_VAL = (short) 0x2;
+    public final static short FLOW_MOD_FAILED_VAL = (short) 0x3;
+    public final static short PORT_MOD_FAILED_VAL = (short) 0x4;
+    public final static short QUEUE_OP_FAILED_VAL = (short) 0x5;
+
+    public static OFErrorType readFrom(ChannelBuffer bb) throws OFParseError {
+        try {
+            return ofWireValue(bb.readShort());
+        } catch (IllegalArgumentException e) {
+            throw new OFParseError(e);
+        }
+    }
+
+    public static void writeTo(ChannelBuffer bb, OFErrorType e) {
+        bb.writeShort(toWireValue(e));
+    }
+
+    public static void putTo(OFErrorType e, PrimitiveSink sink) {
+        sink.putShort(toWireValue(e));
+    }
+
+    public static OFErrorType ofWireValue(short val) {
+        switch(val) {
+            case HELLO_FAILED_VAL:
+                return OFErrorType.HELLO_FAILED;
+            case BAD_REQUEST_VAL:
+                return OFErrorType.BAD_REQUEST;
+            case BAD_ACTION_VAL:
+                return OFErrorType.BAD_ACTION;
+            case FLOW_MOD_FAILED_VAL:
+                return OFErrorType.FLOW_MOD_FAILED;
+            case PORT_MOD_FAILED_VAL:
+                return OFErrorType.PORT_MOD_FAILED;
+            case QUEUE_OP_FAILED_VAL:
+                return OFErrorType.QUEUE_OP_FAILED;
+            default:
+                throw new IllegalArgumentException("Illegal wire value for type OFErrorType in version 1.0: " + val);
+        }
+    }
+
+
+    public static short toWireValue(OFErrorType e) {
+        switch(e) {
+            case HELLO_FAILED:
+                return HELLO_FAILED_VAL;
+            case BAD_REQUEST:
+                return BAD_REQUEST_VAL;
+            case BAD_ACTION:
+                return BAD_ACTION_VAL;
+            case FLOW_MOD_FAILED:
+                return FLOW_MOD_FAILED_VAL;
+            case PORT_MOD_FAILED:
+                return PORT_MOD_FAILED_VAL;
+            case QUEUE_OP_FAILED:
+                return QUEUE_OP_FAILED_VAL;
+            default:
+                throw new IllegalArgumentException("Illegal enum value for type OFErrorType in version 1.0: " + e);
+        }
+    }
+
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFExperimenterStatsReplyVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFExperimenterStatsReplyVer10.java
new file mode 100644
index 0000000..f97c13c
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFExperimenterStatsReplyVer10.java
@@ -0,0 +1,70 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_virtual_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+abstract class OFExperimenterStatsReplyVer10 {
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 16;
+
+
+    public final static OFExperimenterStatsReplyVer10.Reader READER = new Reader();
+
+    static class Reader implements OFMessageReader<OFExperimenterStatsReply> {
+        @Override
+        public OFExperimenterStatsReply readFrom(ChannelBuffer bb) throws OFParseError {
+            if(bb.readableBytes() < MINIMUM_LENGTH)
+                return null;
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 17
+            byte type = bb.readByte();
+            if(type != (byte) 0x11)
+                throw new OFParseError("Wrong type: Expected=OFType.STATS_REPLY(17), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            U32.f(bb.readInt());
+            // fixed value property statsType == 65535
+            short statsType = bb.readShort();
+            if(statsType != (short) 0xffff)
+                throw new OFParseError("Wrong statsType: Expected=OFStatsType.EXPERIMENTER(65535), got="+statsType);
+            OFStatsReplyFlagsSerializerVer10.readFrom(bb);
+            int experimenter = bb.readInt();
+            bb.readerIndex(start);
+            switch(experimenter) {
+               case 0x5c16c7:
+                   // discriminator value 0x5c16c7L=0x5c16c7L for class OFBsnStatsReplyVer10
+                   return OFBsnStatsReplyVer10.READER.readFrom(bb);
+               default:
+                   throw new OFParseError("Unknown value for discriminator experimenter of class OFExperimenterStatsReplyVer10: " + experimenter);
+            }
+        }
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFExperimenterStatsRequestVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFExperimenterStatsRequestVer10.java
new file mode 100644
index 0000000..fbe9855
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFExperimenterStatsRequestVer10.java
@@ -0,0 +1,70 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_virtual_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+abstract class OFExperimenterStatsRequestVer10 {
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 16;
+
+
+    public final static OFExperimenterStatsRequestVer10.Reader READER = new Reader();
+
+    static class Reader implements OFMessageReader<OFExperimenterStatsRequest<?>> {
+        @Override
+        public OFExperimenterStatsRequest<?> readFrom(ChannelBuffer bb) throws OFParseError {
+            if(bb.readableBytes() < MINIMUM_LENGTH)
+                return null;
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 16
+            byte type = bb.readByte();
+            if(type != (byte) 0x10)
+                throw new OFParseError("Wrong type: Expected=OFType.STATS_REQUEST(16), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            U32.f(bb.readInt());
+            // fixed value property statsType == 65535
+            short statsType = bb.readShort();
+            if(statsType != (short) 0xffff)
+                throw new OFParseError("Wrong statsType: Expected=OFStatsType.EXPERIMENTER(65535), got="+statsType);
+            OFStatsRequestFlagsSerializerVer10.readFrom(bb);
+            int experimenter = bb.readInt();
+            bb.readerIndex(start);
+            switch(experimenter) {
+               case 0x5c16c7:
+                   // discriminator value 0x5c16c7L=0x5c16c7L for class OFBsnStatsRequestVer10
+                   return OFBsnStatsRequestVer10.READER.readFrom(bb);
+               default:
+                   throw new OFParseError("Unknown value for discriminator experimenter of class OFExperimenterStatsRequestVer10: " + experimenter);
+            }
+        }
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFExperimenterVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFExperimenterVer10.java
new file mode 100644
index 0000000..37b7c26
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFExperimenterVer10.java
@@ -0,0 +1,68 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_virtual_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import org.jboss.netty.buffer.ChannelBuffer;
+
+abstract class OFExperimenterVer10 {
+    // version: 1.0
+    final static byte WIRE_VERSION = 1;
+    final static int MINIMUM_LENGTH = 12;
+
+
+    public final static OFExperimenterVer10.Reader READER = new Reader();
+
+    static class Reader implements OFMessageReader<OFExperimenter> {
+        @Override
+        public OFExperimenter readFrom(ChannelBuffer bb) throws OFParseError {
+            if(bb.readableBytes() < MINIMUM_LENGTH)
+                return null;
+            int start = bb.readerIndex();
+            // fixed value property version == 1
+            byte version = bb.readByte();
+            if(version != (byte) 0x1)
+                throw new OFParseError("Wrong version: Expected=OFVersion.OF_10(1), got="+version);
+            // fixed value property type == 4
+            byte type = bb.readByte();
+            if(type != (byte) 0x4)
+                throw new OFParseError("Wrong type: Expected=OFType.EXPERIMENTER(4), got="+type);
+            int length = U16.f(bb.readShort());
+            if(length < MINIMUM_LENGTH)
+                throw new OFParseError("Wrong length: Expected to be >= " + MINIMUM_LENGTH + ", was: " + length);
+            U32.f(bb.readInt());
+            int experimenter = bb.readInt();
+            bb.readerIndex(start);
+            switch(experimenter) {
+               case 0x5c16c7:
+                   // discriminator value 0x5c16c7L=0x5c16c7L for class OFBsnHeaderVer10
+                   return OFBsnHeaderVer10.READER.readFrom(bb);
+               case 0x2320:
+                   // discriminator value 0x2320L=0x2320L for class OFNiciraHeaderVer10
+                   return OFNiciraHeaderVer10.READER.readFrom(bb);
+               default:
+                   throw new OFParseError("Unknown value for discriminator experimenter of class OFExperimenterVer10: " + experimenter);
+            }
+        }
+    }
+}
diff --git a/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFFactoryVer10.java b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFFactoryVer10.java
new file mode 100644
index 0000000..7ef1b32
--- /dev/null
+++ b/of-save/lib/gen-src/main/java/org/projectfloodlight/openflow/protocol/ver10/OFFactoryVer10.java
@@ -0,0 +1,1245 @@
+// Copyright (c) 2008 The Board of Trustees of The Leland Stanford Junior University
+// Copyright (c) 2011, 2012 Open Networking Foundation
+// Copyright (c) 2012, 2013 Big Switch Networks, Inc.
+// This library was generated by the LoxiGen Compiler.
+// See the file LICENSE.txt which should have been included in the source distribution
+
+// Automatically generated by LOXI from template of_factory_class.java
+// Do not modify
+
+package org.projectfloodlight.openflow.protocol.ver10;
+
+import org.projectfloodlight.openflow.protocol.*;
+import org.projectfloodlight.openflow.protocol.action.*;
+import org.projectfloodlight.openflow.protocol.actionid.*;
+import org.projectfloodlight.openflow.protocol.bsntlv.*;
+import org.projectfloodlight.openflow.protocol.errormsg.*;
+import org.projectfloodlight.openflow.protocol.meterband.*;
+import org.projectfloodlight.openflow.protocol.instruction.*;
+import org.projectfloodlight.openflow.protocol.instructionid.*;
+import org.projectfloodlight.openflow.protocol.match.*;
+import org.projectfloodlight.openflow.protocol.oxm.*;
+import org.projectfloodlight.openflow.protocol.queueprop.*;
+import org.projectfloodlight.openflow.types.*;
+import org.projectfloodlight.openflow.util.*;
+import org.projectfloodlight.openflow.exceptions.*;
+import java.util.Set;
+import java.util.List;
+import org.projectfloodlight.openflow.protocol.OFOxmList;
+
+
+public class OFFactoryVer10 implements OFFactory {
+    public final static OFFactoryVer10 INSTANCE = new OFFactoryVer10();
+
+    private final XidGenerator xidGenerator = XidGenerators.global();
+
+    public OFActions actions() {
+        return OFActionsVer10.INSTANCE;
+    }
+    public OFInstructions instructions() {
+        return OFInstructionsVer10.INSTANCE;
+    }
+    public OFMeterBands meterBands() {
+        return OFMeterBandsVer10.INSTANCE;
+    }
+    public OFOxms oxms() {
+        return OFOxmsVer10.INSTANCE;
+    }
+    public OFQueueProps queueProps() {
+        return OFQueuePropsVer10.INSTANCE;
+    }
+    public OFErrorMsgs errorMsgs() {
+        return OFErrorMsgsVer10.INSTANCE;
+    }
+    public OFActionIds actionIds() {
+        return OFActionIdsVer10.INSTANCE;
+    }
+    public OFInstructionIds instructionIds() {
+        return OFInstructionIdsVer10.INSTANCE;
+    }
+    public OFBsnTlvs bsnTlvs() {
+        return OFBsnTlvsVer10.INSTANCE;
+    }
+
+
+    public OFAggregateStatsReply.Builder buildAggregateStatsReply() {
+        return new OFAggregateStatsReplyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFAggregateStatsRequest.Builder buildAggregateStatsRequest() {
+        return new OFAggregateStatsRequestVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBarrierReply.Builder buildBarrierReply() {
+        return new OFBarrierReplyVer10.Builder().setXid(nextXid());
+    }
+    public OFBarrierReply barrierReply() {
+        return new OFBarrierReplyVer10(
+                nextXid()
+                    );
+    }
+
+    public OFBarrierRequest.Builder buildBarrierRequest() {
+        return new OFBarrierRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFBarrierRequest barrierRequest() {
+        return new OFBarrierRequestVer10(
+                nextXid()
+                    );
+    }
+
+    public OFBsnBwClearDataReply.Builder buildBsnBwClearDataReply() {
+        return new OFBsnBwClearDataReplyVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnBwClearDataReply bsnBwClearDataReply(long status) {
+        return new OFBsnBwClearDataReplyVer10(
+                nextXid(),
+                      status
+                    );
+    }
+
+    public OFBsnBwClearDataRequest.Builder buildBsnBwClearDataRequest() {
+        return new OFBsnBwClearDataRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnBwClearDataRequest bsnBwClearDataRequest() {
+        return new OFBsnBwClearDataRequestVer10(
+                nextXid()
+                    );
+    }
+
+    public OFBsnBwEnableGetReply.Builder buildBsnBwEnableGetReply() {
+        return new OFBsnBwEnableGetReplyVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnBwEnableGetReply bsnBwEnableGetReply(long enabled) {
+        return new OFBsnBwEnableGetReplyVer10(
+                nextXid(),
+                      enabled
+                    );
+    }
+
+    public OFBsnBwEnableGetRequest.Builder buildBsnBwEnableGetRequest() {
+        return new OFBsnBwEnableGetRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnBwEnableGetRequest bsnBwEnableGetRequest() {
+        return new OFBsnBwEnableGetRequestVer10(
+                nextXid()
+                    );
+    }
+
+    public OFBsnBwEnableSetReply.Builder buildBsnBwEnableSetReply() {
+        return new OFBsnBwEnableSetReplyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBsnBwEnableSetRequest.Builder buildBsnBwEnableSetRequest() {
+        return new OFBsnBwEnableSetRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnBwEnableSetRequest bsnBwEnableSetRequest(long enable) {
+        return new OFBsnBwEnableSetRequestVer10(
+                nextXid(),
+                      enable
+                    );
+    }
+
+    public OFBsnGetInterfacesReply.Builder buildBsnGetInterfacesReply() {
+        return new OFBsnGetInterfacesReplyVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnGetInterfacesReply bsnGetInterfacesReply(List<OFBsnInterface> interfaces) {
+        return new OFBsnGetInterfacesReplyVer10(
+                nextXid(),
+                      interfaces
+                    );
+    }
+
+    public OFBsnGetInterfacesRequest.Builder buildBsnGetInterfacesRequest() {
+        return new OFBsnGetInterfacesRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnGetInterfacesRequest bsnGetInterfacesRequest() {
+        return new OFBsnGetInterfacesRequestVer10(
+                nextXid()
+                    );
+    }
+
+    public OFBsnGetIpMaskReply.Builder buildBsnGetIpMaskReply() {
+        return new OFBsnGetIpMaskReplyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBsnGetIpMaskRequest.Builder buildBsnGetIpMaskRequest() {
+        return new OFBsnGetIpMaskRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnGetIpMaskRequest bsnGetIpMaskRequest(short index) {
+        return new OFBsnGetIpMaskRequestVer10(
+                nextXid(),
+                      index
+                    );
+    }
+
+    public OFBsnGetL2TableReply.Builder buildBsnGetL2TableReply() {
+        return new OFBsnGetL2TableReplyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBsnGetL2TableRequest.Builder buildBsnGetL2TableRequest() {
+        return new OFBsnGetL2TableRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnGetL2TableRequest bsnGetL2TableRequest() {
+        return new OFBsnGetL2TableRequestVer10(
+                nextXid()
+                    );
+    }
+
+    public OFBsnGetMirroringReply.Builder buildBsnGetMirroringReply() {
+        return new OFBsnGetMirroringReplyVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnGetMirroringReply bsnGetMirroringReply(short reportMirrorPorts) {
+        return new OFBsnGetMirroringReplyVer10(
+                nextXid(),
+                      reportMirrorPorts
+                    );
+    }
+
+    public OFBsnGetMirroringRequest.Builder buildBsnGetMirroringRequest() {
+        return new OFBsnGetMirroringRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnGetMirroringRequest bsnGetMirroringRequest(short reportMirrorPorts) {
+        return new OFBsnGetMirroringRequestVer10(
+                nextXid(),
+                      reportMirrorPorts
+                    );
+    }
+
+    public OFBsnHybridGetReply.Builder buildBsnHybridGetReply() {
+        return new OFBsnHybridGetReplyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBsnHybridGetRequest.Builder buildBsnHybridGetRequest() {
+        return new OFBsnHybridGetRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnHybridGetRequest bsnHybridGetRequest() {
+        return new OFBsnHybridGetRequestVer10(
+                nextXid()
+                    );
+    }
+
+    public OFBsnInterface.Builder buildBsnInterface() {
+        return new OFBsnInterfaceVer10.Builder();
+    }
+
+    public OFBsnPduRxReply.Builder buildBsnPduRxReply() {
+        return new OFBsnPduRxReplyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBsnPduRxRequest.Builder buildBsnPduRxRequest() {
+        return new OFBsnPduRxRequestVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBsnPduRxTimeout.Builder buildBsnPduRxTimeout() {
+        return new OFBsnPduRxTimeoutVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBsnPduTxReply.Builder buildBsnPduTxReply() {
+        return new OFBsnPduTxReplyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBsnPduTxRequest.Builder buildBsnPduTxRequest() {
+        return new OFBsnPduTxRequestVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBsnSetIpMask.Builder buildBsnSetIpMask() {
+        return new OFBsnSetIpMaskVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBsnSetL2TableReply.Builder buildBsnSetL2TableReply() {
+        return new OFBsnSetL2TableReplyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBsnSetL2TableRequest.Builder buildBsnSetL2TableRequest() {
+        return new OFBsnSetL2TableRequestVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBsnSetMirroring.Builder buildBsnSetMirroring() {
+        return new OFBsnSetMirroringVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnSetMirroring bsnSetMirroring(short reportMirrorPorts) {
+        return new OFBsnSetMirroringVer10(
+                nextXid(),
+                      reportMirrorPorts
+                    );
+    }
+
+    public OFBsnSetPktinSuppressionReply.Builder buildBsnSetPktinSuppressionReply() {
+        return new OFBsnSetPktinSuppressionReplyVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnSetPktinSuppressionReply bsnSetPktinSuppressionReply(long status) {
+        return new OFBsnSetPktinSuppressionReplyVer10(
+                nextXid(),
+                      status
+                    );
+    }
+
+    public OFBsnSetPktinSuppressionRequest.Builder buildBsnSetPktinSuppressionRequest() {
+        return new OFBsnSetPktinSuppressionRequestVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBsnShellCommand.Builder buildBsnShellCommand() {
+        return new OFBsnShellCommandVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBsnShellOutput.Builder buildBsnShellOutput() {
+        return new OFBsnShellOutputVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnShellOutput bsnShellOutput(byte[] data) {
+        return new OFBsnShellOutputVer10(
+                nextXid(),
+                      data
+                    );
+    }
+
+    public OFBsnShellStatus.Builder buildBsnShellStatus() {
+        return new OFBsnShellStatusVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnShellStatus bsnShellStatus(long status) {
+        return new OFBsnShellStatusVer10(
+                nextXid(),
+                      status
+                    );
+    }
+
+    public OFBsnVirtualPortCreateReply.Builder buildBsnVirtualPortCreateReply() {
+        return new OFBsnVirtualPortCreateReplyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFBsnVirtualPortCreateRequest.Builder buildBsnVirtualPortCreateRequest() {
+        return new OFBsnVirtualPortCreateRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnVirtualPortCreateRequest bsnVirtualPortCreateRequest(OFBsnVport vport) {
+        return new OFBsnVirtualPortCreateRequestVer10(
+                nextXid(),
+                      vport
+                    );
+    }
+
+    public OFBsnVirtualPortRemoveReply.Builder buildBsnVirtualPortRemoveReply() {
+        return new OFBsnVirtualPortRemoveReplyVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnVirtualPortRemoveReply bsnVirtualPortRemoveReply(long status) {
+        return new OFBsnVirtualPortRemoveReplyVer10(
+                nextXid(),
+                      status
+                    );
+    }
+
+    public OFBsnVirtualPortRemoveRequest.Builder buildBsnVirtualPortRemoveRequest() {
+        return new OFBsnVirtualPortRemoveRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFBsnVirtualPortRemoveRequest bsnVirtualPortRemoveRequest(long vportNo) {
+        return new OFBsnVirtualPortRemoveRequestVer10(
+                nextXid(),
+                      vportNo
+                    );
+    }
+
+    public OFBsnVportL2Gre.Builder buildBsnVportL2Gre() {
+        return new OFBsnVportL2GreVer10.Builder();
+    }
+
+    public OFBsnVportQInQ.Builder buildBsnVportQInQ() {
+        return new OFBsnVportQInQVer10.Builder();
+    }
+
+    public OFDescStatsReply.Builder buildDescStatsReply() {
+        return new OFDescStatsReplyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFDescStatsRequest.Builder buildDescStatsRequest() {
+        return new OFDescStatsRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFDescStatsRequest descStatsRequest(Set<OFStatsRequestFlags> flags) {
+        return new OFDescStatsRequestVer10(
+                nextXid(),
+                      flags
+                    );
+    }
+
+    public OFEchoReply.Builder buildEchoReply() {
+        return new OFEchoReplyVer10.Builder().setXid(nextXid());
+    }
+    public OFEchoReply echoReply(byte[] data) {
+        return new OFEchoReplyVer10(
+                nextXid(),
+                      data
+                    );
+    }
+
+    public OFEchoRequest.Builder buildEchoRequest() {
+        return new OFEchoRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFEchoRequest echoRequest(byte[] data) {
+        return new OFEchoRequestVer10(
+                nextXid(),
+                      data
+                    );
+    }
+
+    public OFFeaturesReply.Builder buildFeaturesReply() {
+        return new OFFeaturesReplyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFFeaturesRequest.Builder buildFeaturesRequest() {
+        return new OFFeaturesRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFFeaturesRequest featuresRequest() {
+        return new OFFeaturesRequestVer10(
+                nextXid()
+                    );
+    }
+
+    public OFFlowAdd.Builder buildFlowAdd() {
+        return new OFFlowAddVer10.Builder().setXid(nextXid());
+    }
+
+    public OFFlowDelete.Builder buildFlowDelete() {
+        return new OFFlowDeleteVer10.Builder().setXid(nextXid());
+    }
+
+    public OFFlowDeleteStrict.Builder buildFlowDeleteStrict() {
+        return new OFFlowDeleteStrictVer10.Builder().setXid(nextXid());
+    }
+
+    public OFFlowModify.Builder buildFlowModify() {
+        return new OFFlowModifyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFFlowModifyStrict.Builder buildFlowModifyStrict() {
+        return new OFFlowModifyStrictVer10.Builder().setXid(nextXid());
+    }
+
+    public OFFlowRemoved.Builder buildFlowRemoved() {
+        return new OFFlowRemovedVer10.Builder().setXid(nextXid());
+    }
+
+    public OFFlowStatsEntry.Builder buildFlowStatsEntry() {
+        return new OFFlowStatsEntryVer10.Builder();
+    }
+
+    public OFFlowStatsReply.Builder buildFlowStatsReply() {
+        return new OFFlowStatsReplyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFFlowStatsRequest.Builder buildFlowStatsRequest() {
+        return new OFFlowStatsRequestVer10.Builder().setXid(nextXid());
+    }
+
+    public OFGetConfigReply.Builder buildGetConfigReply() {
+        return new OFGetConfigReplyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFGetConfigRequest.Builder buildGetConfigRequest() {
+        return new OFGetConfigRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFGetConfigRequest getConfigRequest() {
+        return new OFGetConfigRequestVer10(
+                nextXid()
+                    );
+    }
+
+    public OFHello.Builder buildHello() {
+        return new OFHelloVer10.Builder().setXid(nextXid());
+    }
+    public OFHello hello(List<OFHelloElem> elements) {
+        return new OFHelloVer10(
+                nextXid()
+                    );
+    }
+
+    public OFMatchV1.Builder buildMatchV1() {
+        return new OFMatchV1Ver10.Builder();
+    }
+    public Match.Builder buildMatch() {
+        return new OFMatchV1Ver10.Builder();
+    }
+
+    final static Match MATCH_WILDCARD_ALL = OFMatchV1Ver10.DEFAULT;
+
+    public Match matchWildcardAll() {
+        return MATCH_WILDCARD_ALL;
+    }
+
+    public OFNiciraControllerRoleReply.Builder buildNiciraControllerRoleReply() {
+        return new OFNiciraControllerRoleReplyVer10.Builder().setXid(nextXid());
+    }
+    public OFNiciraControllerRoleReply niciraControllerRoleReply(OFNiciraControllerRole role) {
+        return new OFNiciraControllerRoleReplyVer10(
+                nextXid(),
+                      role
+                    );
+    }
+
+    public OFNiciraControllerRoleRequest.Builder buildNiciraControllerRoleRequest() {
+        return new OFNiciraControllerRoleRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFNiciraControllerRoleRequest niciraControllerRoleRequest(OFNiciraControllerRole role) {
+        return new OFNiciraControllerRoleRequestVer10(
+                nextXid(),
+                      role
+                    );
+    }
+
+    public OFPacketIn.Builder buildPacketIn() {
+        return new OFPacketInVer10.Builder().setXid(nextXid());
+    }
+
+    public OFPacketOut.Builder buildPacketOut() {
+        return new OFPacketOutVer10.Builder().setXid(nextXid());
+    }
+
+    public OFPacketQueue.Builder buildPacketQueue() {
+        return new OFPacketQueueVer10.Builder();
+    }
+
+    public OFPortDesc.Builder buildPortDesc() {
+        return new OFPortDescVer10.Builder();
+    }
+
+    public OFPortMod.Builder buildPortMod() {
+        return new OFPortModVer10.Builder().setXid(nextXid());
+    }
+
+    public OFPortStatsEntry.Builder buildPortStatsEntry() {
+        return new OFPortStatsEntryVer10.Builder();
+    }
+
+    public OFPortStatsReply.Builder buildPortStatsReply() {
+        return new OFPortStatsReplyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFPortStatsRequest.Builder buildPortStatsRequest() {
+        return new OFPortStatsRequestVer10.Builder().setXid(nextXid());
+    }
+
+    public OFPortStatus.Builder buildPortStatus() {
+        return new OFPortStatusVer10.Builder().setXid(nextXid());
+    }
+
+    public OFQueueGetConfigReply.Builder buildQueueGetConfigReply() {
+        return new OFQueueGetConfigReplyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFQueueGetConfigRequest.Builder buildQueueGetConfigRequest() {
+        return new OFQueueGetConfigRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFQueueGetConfigRequest queueGetConfigRequest(OFPort port) {
+        return new OFQueueGetConfigRequestVer10(
+                nextXid(),
+                      port
+                    );
+    }
+
+    public OFQueueStatsEntry.Builder buildQueueStatsEntry() {
+        return new OFQueueStatsEntryVer10.Builder();
+    }
+
+    public OFQueueStatsReply.Builder buildQueueStatsReply() {
+        return new OFQueueStatsReplyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFQueueStatsRequest.Builder buildQueueStatsRequest() {
+        return new OFQueueStatsRequestVer10.Builder().setXid(nextXid());
+    }
+
+    public OFSetConfig.Builder buildSetConfig() {
+        return new OFSetConfigVer10.Builder().setXid(nextXid());
+    }
+
+    public OFTableMod.Builder buildTableMod() {
+        throw new UnsupportedOperationException("OFTableMod not supported in version 1.0");
+    }
+
+    public OFTableStatsEntry.Builder buildTableStatsEntry() {
+        return new OFTableStatsEntryVer10.Builder();
+    }
+
+    public OFTableStatsReply.Builder buildTableStatsReply() {
+        return new OFTableStatsReplyVer10.Builder().setXid(nextXid());
+    }
+
+    public OFTableStatsRequest.Builder buildTableStatsRequest() {
+        return new OFTableStatsRequestVer10.Builder().setXid(nextXid());
+    }
+    public OFTableStatsRequest tableStatsRequest(Set<OFStatsRequestFlags> flags) {
+        return new OFTableStatsRequestVer10(
+                nextXid(),
+                      flags
+                    );
+    }
+
+    public OFBucket.Builder buildBucket() {
+        throw new UnsupportedOperationException("OFBucket not supported in version 1.0");
+    }
+
+    public OFBucketCounter.Builder buildBucketCounter() {
+        throw new UnsupportedOperationException("OFBucketCounter not supported in version 1.0");
+    }
+    public OFBucketCounter bucketCounter(U64 packetCount, U64 byteCount) {
+        throw new UnsupportedOperationException("OFBucketCounter not supported in version 1.0");
+    }
+
+    public OFGroupAdd.Builder buildGroupAdd() {
+        throw new UnsupportedOperationException("OFGroupAdd not supported in version 1.0");
+    }
+
+    public OFGroupDelete.Builder buildGroupDelete() {
+        throw new UnsupportedOperationException("OFGroupDelete not supported in version 1.0");
+    }
+
+    public OFGroupDescStatsEntry.Builder buildGroupDescStatsEntry() {
+        throw new UnsupportedOperationException("OFGroupDescStatsEntry not supported in version 1.0");
+    }
+
+    public OFGroupDescStatsReply.Builder buildGroupDescStatsReply() {
+        throw new UnsupportedOperationException("OFGroupDescStatsReply not supported in version 1.0");
+    }
+
+    public OFGroupDescStatsRequest.Builder buildGroupDescStatsRequest() {
+        throw new UnsupportedOperationException("OFGroupDescStatsRequest not supported in version 1.0");
+    }
+    public OFGroupDescStatsRequest groupDescStatsRequest(Set<OFStatsRequestFlags> flags) {
+        throw new UnsupportedOperationException("OFGroupDescStatsRequest not supported in version 1.0");
+    }
+
+    public OFGroupModify.Builder buildGroupModify() {
+        throw new UnsupportedOperationException("OFGroupModify not supported in version 1.0");
+    }
+
+    public OFGroupStatsEntry.Builder buildGroupStatsEntry() {
+        throw new UnsupportedOperationException("OFGroupStatsEntry not supported in version 1.0");
+    }
+
+    public OFGroupStatsReply.Builder buildGroupStatsReply() {
+        throw new UnsupportedOperationException("OFGroupStatsReply not supported in version 1.0");
+    }
+
+    public OFGroupStatsRequest.Builder buildGroupStatsRequest() {
+        throw new UnsupportedOperationException("OFGroupStatsRequest not supported in version 1.0");
+    }
+
+    public OFMatchV2.Builder buildMatchV2() {
+        throw new UnsupportedOperationException("OFMatchV2 not supported in version 1.0");
+    }
+
+    public OFGroupFeaturesStatsReply.Builder buildGroupFeaturesStatsReply() {
+        throw new UnsupportedOperationException("OFGroupFeaturesStatsReply not supported in version 1.0");
+    }
+
+    public OFGroupFeaturesStatsRequest.Builder buildGroupFeaturesStatsRequest() {
+        throw new UnsupportedOperationException("OFGroupFeaturesStatsRequest not supported in version 1.0");
+    }
+    public OFGroupFeaturesStatsRequest groupFeaturesStatsRequest(Set<OFStatsRequestFlags> flags) {
+        throw new UnsupportedOperationException("OFGroupFeaturesStatsRequest not supported in version 1.0");
+    }
+
+    public OFMatchV3.Builder buildMatchV3() {
+        throw new UnsupportedOperationException("OFMatchV3 not supported in version 1.0");
+    }
+    public OFMatchV3 matchV3(OFOxmList oxmList) {
+        throw new UnsupportedOperationException("OFMatchV3 not supported in version 1.0");
+    }
+
+    public OFRoleReply.Builder buildRoleReply() {
+        throw new UnsupportedOperationException("OFRoleReply not supported in version 1.0");
+    }
+
+    public OFRoleRequest.Builder buildRoleRequest() {
+        throw new UnsupportedOperationException("OFRoleRequest not supported in version 1.0");
+    }
+
+    public OFAsyncGetReply.Builder buildAsyncGetReply() {
+        throw new UnsupportedOperationException("OFAsyncGetReply not supported in version 1.0");
+    }
+
+    public OFAsyncGetRequest.Builder buildAsyncGetRequest() {
+        throw new UnsupportedOperationException("OFAsyncGetRequest not supported in version 1.0");
+    }
+
+    public OFAsyncSet.Builder buildAsyncSet() {
+        throw new UnsupportedOperationException("OFAsyncSet not supported in version 1.0");
+    }
+
+    public OFBsnArpIdle.Builder buildBsnArpIdle() {
+        throw new UnsupportedOperationException("OFBsnArpIdle not supported in version 1.0");
+    }
+
+    public OFBsnControllerConnection.Builder buildBsnControllerConnection() {
+        throw new UnsupportedOperationException("OFBsnControllerConnection not supported in version 1.0");
+    }
+
+    public OFBsnControllerConnectionsReply.Builder buildBsnControllerConnectionsReply() {
+        throw new UnsupportedOperationException("OFBsnControllerConnectionsReply not supported in version 1.0");
+    }
+    public OFBsnControllerConnectionsReply bsnControllerConnectionsReply(List<OFBsnControllerConnection> connections) {
+        throw new UnsupportedOperationException("OFBsnControllerConnectionsReply not supported in version 1.0");
+    }
+
+    public OFBsnControllerConnectionsRequest.Builder buildBsnControllerConnectionsRequest() {
+        throw new UnsupportedOperationException("OFBsnControllerConnectionsRequest not supported in version 1.0");
+    }
+    public OFBsnControllerConnectionsRequest bsnControllerConnectionsRequest() {
+        throw new UnsupportedOperationException("OFBsnControllerConnectionsRequest not supported in version 1.0");
+    }
+
+    public OFBsnDebugCounterDescStatsEntry.Builder buildBsnDebugCounterDescStatsEntry() {
+        throw new UnsupportedOperationException("OFBsnDebugCounterDescStatsEntry not supported in version 1.0");
+    }
+
+    public OFBsnDebugCounterDescStatsReply.Builder buildBsnDebugCounterDescStatsReply() {
+        throw new UnsupportedOperationException("OFBsnDebugCounterDescStatsReply not supported in version 1.0");
+    }
+
+    public OFBsnDebugCounterDescStatsRequest.Builder buildBsnDebugCounterDescStatsRequest() {
+        throw new UnsupportedOperationException("OFBsnDebugCounterDescStatsRequest not supported in version 1.0");
+    }
+    public OFBsnDebugCounterDescStatsRequest bsnDebugCounterDescStatsRequest(Set<OFStatsRequestFlags> flags) {
+        throw new UnsupportedOperationException("OFBsnDebugCounterDescStatsRequest not supported in version 1.0");
+    }
+
+    public OFBsnDebugCounterStatsEntry.Builder buildBsnDebugCounterStatsEntry() {
+        throw new UnsupportedOperationException("OFBsnDebugCounterStatsEntry not supported in version 1.0");
+    }
+    public OFBsnDebugCounterStatsEntry bsnDebugCounterStatsEntry(U64 counterId, U64 value) {
+        throw new UnsupportedOperationException("OFBsnDebugCounterStatsEntry not supported in version 1.0");
+    }
+
+    public OFBsnDebugCounterStatsReply.Builder buildBsnDebugCounterStatsReply() {
+        throw new UnsupportedOperationException("OFBsnDebugCounterStatsReply not supported in version 1.0");
+    }
+
+    public OFBsnDebugCounterStatsRequest.Builder buildBsnDebugCounterStatsRequest() {
+        throw new UnsupportedOperationException("OFBsnDebugCounterStatsRequest not supported in version 1.0");
+    }
+    public OFBsnDebugCounterStatsRequest bsnDebugCounterStatsRequest(Set<OFStatsRequestFlags> flags) {
+        throw new UnsupportedOperationException("OFBsnDebugCounterStatsRequest not supported in version 1.0");
+    }
+
+    public OFBsnFlowChecksumBucketStatsEntry.Builder buildBsnFlowChecksumBucketStatsEntry() {
+        throw new UnsupportedOperationException("OFBsnFlowChecksumBucketStatsEntry not supported in version 1.0");
+    }
+    public OFBsnFlowChecksumBucketStatsEntry bsnFlowChecksumBucketStatsEntry(U64 checksum) {
+        throw new UnsupportedOperationException("OFBsnFlowChecksumBucketStatsEntry not supported in version 1.0");
+    }
+
+    public OFBsnFlowChecksumBucketStatsReply.Builder buildBsnFlowChecksumBucketStatsReply() {
+        throw new UnsupportedOperationException("OFBsnFlowChecksumBucketStatsReply not supported in version 1.0");
+    }
+
+    public OFBsnFlowChecksumBucketStatsRequest.Builder buildBsnFlowChecksumBucketStatsRequest() {
+        throw new UnsupportedOperationException("OFBsnFlowChecksumBucketStatsRequest not supported in version 1.0");
+    }
+
+    public OFBsnFlowIdle.Builder buildBsnFlowIdle() {
+        throw new UnsupportedOperationException("OFBsnFlowIdle not supported in version 1.0");
+    }
+
+    public OFBsnFlowIdleEnableGetReply.Builder buildBsnFlowIdleEnableGetReply() {
+        throw new UnsupportedOperationException("OFBsnFlowIdleEnableGetReply not supported in version 1.0");
+    }
+    public OFBsnFlowIdleEnableGetReply bsnFlowIdleEnableGetReply(long enabled) {
+        throw new UnsupportedOperationException("OFBsnFlowIdleEnableGetReply not supported in version 1.0");
+    }
+
+    public OFBsnFlowIdleEnableGetRequest.Builder buildBsnFlowIdleEnableGetRequest() {
+        throw new UnsupportedOperationException("OFBsnFlowIdleEnableGetRequest not supported in version 1.0");
+    }
+    public OFBsnFlowIdleEnableGetRequest bsnFlowIdleEnableGetRequest() {
+        throw new UnsupportedOperationException("OFBsnFlowIdleEnableGetRequest not supported in version 1.0");
+    }
+
+    public OFBsnFlowIdleEnableSetReply.Builder buildBsnFlowIdleEnableSetReply() {
+        throw new UnsupportedOperationException("OFBsnFlowIdleEnableSetReply not supported in version 1.0");
+    }
+
+    public OFBsnFlowIdleEnableSetRequest.Builder buildBsnFlowIdleEnableSetRequest() {
+        throw new UnsupportedOperationException("OFBsnFlowIdleEnableSetRequest not supported in version 1.0");
+    }
+    public OFBsnFlowIdleEnableSetRequest bsnFlowIdleEnableSetRequest(long enable) {
+        throw new UnsupportedOperationException("OFBsnFlowIdleEnableSetRequest not supported in version 1.0");
+    }
+
+    public OFBsnGentableBucketStatsEntry.Builder buildBsnGentableBucketStatsEntry() {
+        throw new UnsupportedOperationException("OFBsnGentableBucketStatsEntry not supported in version 1.0");
+    }
+    public OFBsnGentableBucketStatsEntry bsnGentableBucketStatsEntry(U128 checksum) {
+        throw new UnsupportedOperationException("OFBsnGentableBucketStatsEntry not supported in version 1.0");
+    }
+
+    public OFBsnGentableBucketStatsReply.Builder buildBsnGentableBucketStatsReply() {
+        throw new UnsupportedOperationException("OFBsnGentableBucketStatsReply not supported in version 1.0");
+    }
+
+    public OFBsnGentableBucketStatsRequest.Builder buildBsnGentableBucketStatsRequest() {
+        throw new UnsupportedOperationException("OFBsnGentableBucketStatsRequest not supported in version 1.0");
+    }
+
+    public OFBsnGentableClearReply.Builder buildBsnGentableClearReply() {
+        throw new UnsupportedOperationException("OFBsnGentableClearReply not supported in version 1.0");
+    }
+
+    public OFBsnGentableClearRequest.Builder buildBsnGentableClearRequest() {
+        throw new UnsupportedOperationException("OFBsnGentableClearRequest not supported in version 1.0");
+    }
+
+    public OFBsnGentableDescStatsEntry.Builder buildBsnGentableDescStatsEntry() {
+        throw new UnsupportedOperationException("OFBsnGentableDescStatsEntry not supported in version 1.0");
+    }
+
+    public OFBsnGentableDescStatsReply.Builder buildBsnGentableDescStatsReply() {
+        throw new UnsupportedOperationException("OFBsnGentableDescStatsReply not supported in version 1.0");
+    }
+
+    public OFBsnGentableDescStatsRequest.Builder buildBsnGentableDescStatsRequest() {
+        throw new UnsupportedOperationException("OFBsnGentableDescStatsRequest not supported in version 1.0");
+    }
+    public OFBsnGentableDescStatsRequest bsnGentableDescStatsRequest(Set<OFStatsRequestFlags> flags) {
+        throw new UnsupportedOperationException("OFBsnGentableDescStatsRequest not supported in version 1.0");
+    }
+
+    public OFBsnGentableEntryAdd.Builder buildBsnGentableEntryAdd() {
+        throw new UnsupportedOperationException("OFBsnGentableEntryAdd not supported in version 1.0");
+    }
+
+    public OFBsnGentableEntryDelete.Builder buildBsnGentableEntryDelete() {
+        throw new UnsupportedOperationException("OFBsnGentableEntryDelete not supported in version 1.0");
+    }
+
+    public OFBsnGentableEntryDescStatsEntry.Builder buildBsnGentableEntryDescStatsEntry() {
+        throw new UnsupportedOperationException("OFBsnGentableEntryDescStatsEntry not supported in version 1.0");
+    }
+
+    public OFBsnGentableEntryDescStatsReply.Builder buildBsnGentableEntryDescStatsReply() {
+        throw new UnsupportedOperationException("OFBsnGentableEntryDescStatsReply not supported in version 1.0");
+    }
+
+    public OFBsnGentableEntryDescStatsRequest.Builder buildBsnGentableEntryDescStatsRequest() {
+        throw new UnsupportedOperationException("OFBsnGentableEntryDescStatsRequest not supported in version 1.0");
+    }
+
+    public OFBsnGentableEntryStatsEntry.Builder buildBsnGentableEntryStatsEntry() {
+        throw new UnsupportedOperationException("OFBsnGentableEntryStatsEntry not supported in version 1.0");
+    }
+    public OFBsnGentableEntryStatsEntry bsnGentableEntryStatsEntry(List<OFBsnTlv> key, List<OFBsnTlv> stats) {
+        throw new UnsupportedOperationException("OFBsnGentableEntryStatsEntry not supported in version 1.0");
+    }
+
+    public OFBsnGentableEntryStatsReply.Builder buildBsnGentableEntryStatsReply() {
+        throw new UnsupportedOperationException("OFBsnGentableEntryStatsReply not supported in version 1.0");
+    }
+
+    public OFBsnGentableEntryStatsRequest.Builder buildBsnGentableEntryStatsRequest() {
+        throw new UnsupportedOperationException("OFBsnGentableEntryStatsRequest not supported in version 1.0");
+    }
+
+    public OFBsnGentableSetBucketsSize.Builder buildBsnGentableSetBucketsSize() {
+        throw new UnsupportedOperationException("OFBsnGentableSetBucketsSize not supported in version 1.0");
+    }
+
+    public OFBsnGentableStatsEntry.Builder buildBsnGentableStatsEntry() {
+        throw new UnsupportedOperationException("OFBsnGentableStatsEntry not supported in version 1.0");
+    }
+
+    public OFBsnGentableStatsReply.Builder buildBsnGentableStatsReply() {
+        throw new UnsupportedOperationException("OFBsnGentableStatsReply not supported in version 1.0");
+    }
+
+    public OFBsnGentableStatsRequest.Builder buildBsnGentableStatsRequest() {
+        throw new UnsupportedOperationException("OFBsnGentableStatsRequest not supported in version 1.0");
+    }
+    public OFBsnGentableStatsRequest bsnGentableStatsRequest(Set<OFStatsRequestFlags> flags) {
+        throw new UnsupportedOperationException("OFBsnGentableStatsRequest not supported in version 1.0");
+    }
+
+    public OFBsnGetSwitchPipelineReply.Builder buildBsnGetSwitchPipelineReply() {
+        throw new UnsupportedOperationException("OFBsnGetSwitchPipelineReply not supported in version 1.0");
+    }
+    public OFBsnGetSwitchPipelineReply bsnGetSwitchPipelineReply(String pipeline) {
+        throw new UnsupportedOperationException("OFBsnGetSwitchPipelineReply not supported in version 1.0");
+    }
+
+    public OFBsnGetSwitchPipelineRequest.Builder buildBsnGetSwitchPipelineRequest() {
+        throw new UnsupportedOperationException("OFBsnGetSwitchPipelineRequest not supported in version 1.0");
+    }
+    public OFBsnGetSwitchPipelineRequest bsnGetSwitchPipelineRequest() {
+        throw new UnsupportedOperationException("OFBsnGetSwitchPipelineRequest not supported in version 1.0");
+    }
+
+    public OFBsnImageDescStatsReply.Builder buildBsnImageDescStatsReply() {
+        throw new UnsupportedOperationException("OFBsnImageDescStatsReply not supported in version 1.0");
+    }
+
+    public OFBsnImageDescStatsRequest.Builder buildBsnImageDescStatsRequest() {
+        throw new UnsupportedOperationException("OFBsnImageDescStatsRequest not supported in version 1.0");
+    }
+    public OFBsnImageDescStatsRequest bsnImageDescStatsRequest(Set<OFStatsRequestFlags> flags) {
+        throw new UnsupportedOperationException("OFBsnImageDescStatsRequest not supported in version 1.0");
+    }
+
+    public OFBsnLacpConvergenceNotif.Builder buildBsnLacpConvergenceNotif() {
+        throw new UnsupportedOperationException("OFBsnLacpConvergenceNotif not supported in version 1.0");
+    }
+
+    public OFBsnLacpStatsEntry.Builder buildBsnLacpStatsEntry() {
+        throw new UnsupportedOperationException("OFBsnLacpStatsEntry not supported in version 1.0");
+    }
+
+    public OFBsnLacpStatsReply.Builder buildBsnLacpStatsReply() {
+        throw new UnsupportedOperationException("OFBsnLacpStatsReply not supported in version 1.0");
+    }
+
+    public OFBsnLacpStatsRequest.Builder buildBsnLacpStatsRequest() {
+        throw new UnsupportedOperationException("OFBsnLacpStatsRequest not supported in version 1.0");
+    }
+    public OFBsnLacpStatsRequest bsnLacpStatsRequest(Set<OFStatsRequestFlags> flags) {
+        throw new UnsupportedOperationException("OFBsnLacpStatsRequest not supported in version 1.0");
+    }
+
+    public OFBsnLog.Builder buildBsnLog() {
+        throw new UnsupportedOperationException("OFBsnLog not supported in version 1.0");
+    }
+
+    public OFBsnPortCounterStatsEntry.Builder buildBsnPortCounterStatsEntry() {
+        throw new UnsupportedOperationException("OFBsnPortCounterStatsEntry not supported in version 1.0");
+    }
+    public OFBsnPortCounterStatsEntry bsnPortCounterStatsEntry(OFPort portNo, List<U64> values) {
+        throw new UnsupportedOperationException("OFBsnPortCounterStatsEntry not supported in version 1.0");
+    }
+
+    public OFBsnPortCounterStatsReply.Builder buildBsnPortCounterStatsReply() {
+        throw new UnsupportedOperationException("OFBsnPortCounterStatsReply not supported in version 1.0");
+    }
+
+    public OFBsnPortCounterStatsRequest.Builder buildBsnPortCounterStatsRequest() {
+        throw new UnsupportedOperationException("OFBsnPortCounterStatsRequest not supported in version 1.0");
+    }
+
+    public OFBsnRoleStatus.Builder buildBsnRoleStatus() {
+        throw new UnsupportedOperationException("OFBsnRoleStatus not supported in version 1.0");
+    }
+
+    public OFBsnSetAuxCxnsReply.Builder buildBsnSetAuxCxnsReply() {
+        throw new UnsupportedOperationException("OFBsnSetAuxCxnsReply not supported in version 1.0");
+    }
+
+    public OFBsnSetAuxCxnsRequest.Builder buildBsnSetAuxCxnsRequest() {
+        throw new UnsupportedOperationException("OFBsnSetAuxCxnsRequest not supported in version 1.0");
+    }
+    public OFBsnSetAuxCxnsRequest bsnSetAuxCxnsRequest(long numAux) {
+        throw new UnsupportedOperationException("OFBsnSetAuxCxnsRequest not supported in version 1.0");
+    }
+
+    public OFBsnSetLacpReply.Builder buildBsnSetLacpReply() {
+        throw new UnsupportedOperationException("OFBsnSetLacpReply not supported in version 1.0");
+    }
+
+    public OFBsnSetLacpRequest.Builder buildBsnSetLacpRequest() {
+        throw new UnsupportedOperationException("OFBsnSetLacpRequest not supported in version 1.0");
+    }
+
+    public OFBsnSetSwitchPipelineReply.Builder buildBsnSetSwitchPipelineReply() {
+        throw new UnsupportedOperationException("OFBsnSetSwitchPipelineReply not supported in version 1.0");
+    }
+    public OFBsnSetSwitchPipelineReply bsnSetSwitchPipelineReply(long status) {
+        throw new UnsupportedOperationException("OFBsnSetSwitchPipelineReply not supported in version 1.0");
+    }
+
+    public OFBsnSetSwitchPipelineRequest.Builder buildBsnSetSwitchPipelineRequest() {
+        throw new UnsupportedOperationException("OFBsnSetSwitchPipelineRequest not supported in version 1.0");
+    }
+    public OFBsnSetSwitchPipelineRequest bsnSetSwitchPipelineRequest(String pipeline) {
+        throw new UnsupportedOperationException("OFBsnSetSwitchPipelineRequest not supported in version 1.0");
+    }
+
+    public OFBsnSwitchPipelineStatsEntry.Builder buildBsnSwitchPipelineStatsEntry() {
+        throw new UnsupportedOperationException("OFBsnSwitchPipelineStatsEntry not supported in version 1.0");
+    }
+    public OFBsnSwitchPipelineStatsEntry bsnSwitchPipelineStatsEntry(String pipeline) {
+        throw new UnsupportedOperationException("OFBsnSwitchPipelineStatsEntry not supported in version 1.0");
+    }
+
+    public OFBsnSwitchPipelineStatsReply.Builder buildBsnSwitchPipelineStatsReply() {
+        throw new UnsupportedOperationException("OFBsnSwitchPipelineStatsReply not supported in version 1.0");
+    }
+
+    public OFBsnSwitchPipelineStatsRequest.Builder buildBsnSwitchPipelineStatsRequest() {
+        throw new UnsupportedOperationException("OFBsnSwitchPipelineStatsRequest not supported in version 1.0");
+    }
+    public OFBsnSwitchPipelineStatsRequest bsnSwitchPipelineStatsRequest(Set<OFStatsRequestFlags> flags) {
+        throw new UnsupportedOperationException("OFBsnSwitchPipelineStatsRequest not supported in version 1.0");
+    }
+
+    public OFBsnTableChecksumStatsEntry.Builder buildBsnTableChecksumStatsEntry() {
+        throw new UnsupportedOperationException("OFBsnTableChecksumStatsEntry not supported in version 1.0");
+    }
+    public OFBsnTableChecksumStatsEntry bsnTableChecksumStatsEntry(TableId tableId, U64 checksum) {
+        throw new UnsupportedOperationException("OFBsnTableChecksumStatsEntry not supported in version 1.0");
+    }
+
+    public OFBsnTableChecksumStatsReply.Builder buildBsnTableChecksumStatsReply() {
+        throw new UnsupportedOperationException("OFBsnTableChecksumStatsReply not supported in version 1.0");
+    }
+
+    public OFBsnTableChecksumStatsRequest.Builder buildBsnTableChecksumStatsRequest() {
+        throw new UnsupportedOperationException("OFBsnTableChecksumStatsRequest not supported in version 1.0");
+    }
+    public OFBsnTableChecksumStatsRequest bsnTableChecksumStatsRequest(Set<OFStatsRequestFlags> flags) {
+        throw new UnsupportedOperationException("OFBsnTableChecksumStatsRequest not supported in version 1.0");
+    }
+
+    public OFBsnTableSetBucketsSize.Builder buildBsnTableSetBucketsSize() {
+        throw new UnsupportedOperationException("OFBsnTableSetBucketsSize not supported in version 1.0");
+    }
+
+    public OFBsnTimeReply.Builder buildBsnTimeReply() {
+        throw new UnsupportedOperationException("OFBsnTimeReply not supported in version 1.0");
+    }
+    public OFBsnTimeReply bsnTimeReply(U64 timeMs) {
+        throw new UnsupportedOperationException("OFBsnTimeReply not supported in version 1.0");
+    }
+
+    public OFBsnTimeRequest.Builder buildBsnTimeRequest() {
+        throw new UnsupportedOperationException("OFBsnTimeRequest not supported in version 1.0");
+    }
+    public OFBsnTimeRequest bsnTimeRequest() {
+        throw new UnsupportedOperationException("OFBsnTimeRequest not supported in version 1.0");
+    }
+
+    public OFBsnVlanCounterStatsEntry.Builder buildBsnVlanCounterStatsEntry() {
+        throw new UnsupportedOperationException("OFBsnVlanCounterStatsEntry not supported in version 1.0");
+    }
+    public OFBsnVlanCounterStatsEntry bsnVlanCounterStatsEntry(int vlanVid, List<U64> values) {
+        throw new UnsupportedOperationException("OFBsnVlanCounterStatsEntry not supported in version 1.0");
+    }
+
+    public OFBsnVlanCounterStatsReply.Builder buildBsnVlanCounterStatsReply() {
+        throw new UnsupportedOperationException("OFBsnVlanCounterStatsReply not supported in version 1.0");
+    }
+
+    public OFBsnVlanCounterStatsRequest.Builder buildBsnVlanCounterStatsRequest() {
+        throw new UnsupportedOperationException("OFBsnVlanCounterStatsRequest not supported in version 1.0");
+    }
+
+    public OFBsnVrfCounterStatsEntry.Builder buildBsnVrfCounterStatsEntry() {
+        throw new UnsupportedOperationException("OFBsnVrfCounterStatsEntry not supported in version 1.0");
+    }
+    public OFBsnVrfCounterStatsEntry bsnVrfCounterStatsEntry(long vrf, List<U64> values) {
+        throw new UnsupportedOperationException("OFBsnVrfCounterStatsEntry not supported in version 1.0");
+    }
+
+    public OFBsnVrfCounterStatsReply.Builder buildBsnVrfCounterStatsReply() {
+        throw new UnsupportedOperationException("OFBsnVrfCounterStatsReply not supported in version 1.0");
+    }
+
+    public OFBsnVrfCounterStatsRequest.Builder buildBsnVrfCounterStatsRequest() {
+        throw new UnsupportedOperationException("OFBsnVrfCounterStatsRequest not supported in version 1.0");
+    }
+
+    public OFHelloElemVersionbitmap.Builder buildHelloElemVersionbitmap() {
+        throw new UnsupportedOperationException("OFHelloElemVersionbitmap not supported in version 1.0");
+    }
+    public OFHelloElemVersionbitmap helloElemVersionbitmap(List<U32> bitmaps) {
+        throw new UnsupportedOperationException("OFHelloElemVersionbitmap not supported in version 1.0");
+    }
+
+    public OFMeterBandStats.Builder buildMeterBandStats() {
+        throw new UnsupportedOperationException("OFMeterBandStats not supported in version 1.0");
+    }
+    public OFMeterBandStats meterBandStats(U64 packetBandCount, U64 byteBandCount) {
+        throw new UnsupportedOperationException("OFMeterBandStats not supported in version 1.0");
+    }
+
+    public OFMeterConfig.Builder buildMeterConfig() {
+        throw new UnsupportedOperationException("OFMeterConfig not supported in version 1.0");
+    }
+
+    public OFMeterConfigStatsReply.Builder buildMeterConfigStatsReply() {
+        throw new UnsupportedOperationException("OFMeterConfigStatsReply not supported in version 1.0");
+    }
+
+    public OFMeterConfigStatsRequest.Builder buildMeterConfigStatsRequest() {
+        throw new UnsupportedOperationException("OFMeterConfigStatsRequest not supported in version 1.0");
+    }
+
+    public OFMeterFeatures.Builder buildMeterFeatures() {
+        throw new UnsupportedOperationException("OFMeterFeatures not supported in version 1.0");
+    }
+
+    public OFMeterFeaturesStatsReply.Builder buildMeterFeaturesStatsReply() {
+        throw new UnsupportedOperationException("OFMeterFeaturesStatsReply not supported in version 1.0");
+    }
+
+    public OFMeterFeaturesStatsRequest.Builder buildMeterFeaturesStatsRequest() {
+        throw new UnsupportedOperationException("OFMeterFeaturesStatsRequest not supported in version 1.0");
+    }
+    public OFMeterFeaturesStatsRequest meterFeaturesStatsRequest(Set<OFStatsRequestFlags> flags) {
+        throw new UnsupportedOperationException("OFMeterFeaturesStatsRequest not supported in version 1.0");
+    }
+
+    public OFMeterMod.Builder buildMeterMod() {
+        throw new UnsupportedOperationException("OFMeterMod not supported in version 1.0");
+    }
+
+    public OFMeterStats.Builder buildMeterStats() {
+        throw new UnsupportedOperationException("OFMeterStats not supported in version 1.0");
+    }
+
+    public OFMeterStatsReply.Builder buildMeterStatsReply() {
+        throw new UnsupportedOperationException("OFMeterStatsReply not supported in version 1.0");
+    }
+
+    public OFMeterStatsRequest.Builder buildMeterStatsRequest() {
+        throw new UnsupportedOperationException("OFMeterStatsRequest not supported in version 1.0");
+    }
+
+    public OFPortDescStatsReply.Builder buildPortDescStatsReply() {
+        throw new UnsupportedOperationException("OFPortDescStatsReply not supported in version 1.0");
+    }
+
+    public OFPortDescStatsRequest.Builder buildPortDescStatsRequest() {
+        throw new UnsupportedOperationException("OFPortDescStatsRequest not supported in version 1.0");
+    }
+    public OFPortDescStatsRequest portDescStatsRequest(Set<OFStatsRequestFlags> flags) {
+        throw new UnsupportedOperationException("OFPortDescStatsRequest not supported in version 1.0");
+    }
+
+    public OFTableFeaturePropApplyActions.Builder buildTableFeaturePropApplyActions() {
+        throw new UnsupportedOperationException("OFTableFeaturePropApplyActions not supported in version 1.0");
+    }
+    public OFTableFeaturePropApplyActions tableFeaturePropApplyActions(List<OFActionId> actionIds) {
+        throw new UnsupportedOperationException("OFTableFeaturePropApplyActions not supported in version 1.0");
+    }
+
+    public OFTableFeaturePropApplyActionsMiss.Builder buildTableFeaturePropApplyActionsMiss() {
+        throw new UnsupportedOperationException("OFTableFeaturePropApplyActionsMiss not supported in version 1.0");
+    }
+    public OFTableFeaturePropApplyActionsMiss tableFeaturePropApplyActionsMiss(List<OFActionId> actionIds) {
+        throw new UnsupportedOperationException("OFTableFeaturePropApplyActionsMiss not supported in version 1.0");
+    }
+
+    public OFTableFeaturePropApplySetfield.Builder buildTableFeaturePropApplySetfield() {
+        throw new UnsupportedOperationException("OFTableFeaturePropApplySetfield not supported in version 1.0");
+    }
+    public OFTableFeaturePropApplySetfield tableFeaturePropApplySetfield(List<U32> oxmIds) {
+        throw new UnsupportedOperationException("OFTableFeaturePropApplySetfield not supported in version 1.0");
+    }
+
+    public OFTableFeaturePropApplySetfieldMiss.Builder buildTableFeaturePropApplySetfieldMiss() {
+        throw new UnsupportedOperationException("OFTableFeaturePropApplySetfieldMiss not supported in version 1.0");
+    }
+    public OFTableFeaturePropApplySetfieldMiss tableFeaturePropApplySetfieldMiss(List<U32> oxmIds) {
+        throw new UnsupportedOperationException("OFTableFeaturePropApplySetfieldMiss not supported in version 1.0");
+    }
+
+    public OFTableFeaturePropExperimenter.Builder buildTableFeaturePropExperimenter() {
+        throw new UnsupportedOperationException("OFTableFeaturePropExperimenter not supported in version 1.0");
+    }
+
+    public OFTableFeaturePropExperimenterMiss.Builder buildTableFeaturePropExperimenterMiss() {
+        throw new UnsupportedOperationException("OFTableFeaturePropExperimenterMiss not supported in version 1.0");
+    }
+
+    public OFTableFeaturePropInstructions.Builder buildTableFeaturePropInstructions() {
+        throw new UnsupportedOperationException("OFTableFeaturePropInstructions not supported in version 1.0");
+    }
+    public OFTableFeaturePropInstructions tableFeaturePropInstructions(List<OFInstructionId> instructionIds) {
+        throw new UnsupportedOperationException("OFTableFeaturePropInstructions not supported in version 1.0");
+    }
+
<