diff --git a/c_gen/c_test_gen.py b/c_gen/c_test_gen.py
index 3609f98..fe7a41d 100644
--- a/c_gen/c_test_gen.py
+++ b/c_gen/c_test_gen.py
@@ -92,7 +92,10 @@
         # Non-scalars; more TBD
         of_octets_t="octets",
         of_meter_features_t="features",
-        of_match_t="match")
+        of_match_t="match",
+        # BSN extensions
+        of_bsn_vport_q_in_q_t="vport",
+        )
 
     if m_type.find("of_list_") == 0:
         return "list"
diff --git a/c_gen/templates/loci_show.h b/c_gen/templates/loci_show.h
index 3d27827..91d3a57 100644
--- a/c_gen/templates/loci_show.h
+++ b/c_gen/templates/loci_show.h
@@ -109,6 +109,12 @@
 #define LOCI_SHOW_u8_ip_proto(writer, cookie, val)         LOCI_SHOW_u8(writer, cookie, val)
 #define LOCI_SHOW_u64_metadata(writer, cookie, val)        LOCI_SHOW_x64(writer, cookie, val)
 #define LOCI_SHOW_u8_enabled(writer, cookie, val)          LOCI_SHOW_u8(writer, cookie, val)
+#define LOCI_SHOW_u32_vport_no(writer, cookie, val)        LOCI_SHOW_u32(writer, cookie, val)
+#define LOCI_SHOW_u32_port_no(writer, cookie, val)         LOCI_SHOW_u32(writer, cookie, val)
+#define LOCI_SHOW_u16_ingress_tpid(writer, cookie, val)    LOCI_SHOW_x16(writer, cookie, val)
+#define LOCI_SHOW_u16_egress_tpid(writer, cookie, val)     LOCI_SHOW_x16(writer, cookie, val)
+#define LOCI_SHOW_u16_ingress_vlan_id(writer, cookie, val) LOCI_SHOW_u16(writer, cookie, val)
+#define LOCI_SHOW_u16_egress_vlan_id(writer, cookie, val)  LOCI_SHOW_u16(writer, cookie, val)
 
 
 
diff --git a/loxi_front_end/type_maps.py b/loxi_front_end/type_maps.py
index 5f58eb3..53334f7 100644
--- a/loxi_front_end/type_maps.py
+++ b/loxi_front_end/type_maps.py
@@ -227,6 +227,25 @@
         )
     }
 
+bsn_vport_types = {
+    # version 1.0
+    of_g.VERSION_1_0:dict(
+        q_in_q      = 0,
+        ),
+    # version 1.1
+    of_g.VERSION_1_1:dict(
+        q_in_q      = 0,
+        ),
+    # version 1.2
+    of_g.VERSION_1_2:dict(
+        q_in_q      = 0,
+        ),
+    # version 1.3
+    of_g.VERSION_1_3:dict(
+        q_in_q      = 0,
+        )
+    }
+
 oxm_types = {
     # version 1.0
     of_g.VERSION_1_0:dict(),
@@ -316,7 +335,9 @@
     of_queue_prop = queue_prop_types,
     of_hello_elem = hello_elem_types,
     of_table_feature_prop = table_feature_prop_types,
-    of_meter_band = meter_band_types
+    of_meter_band = meter_band_types,
+    # BSN specific inheritance extensions
+    of_bsn_vport = bsn_vport_types
     )
 
 ################################################################
@@ -784,21 +805,24 @@
     # version 1.0
     of_g.VERSION_1_0:dict(  # Version 1.0 extensions
         bsn = {   # BSN extensions; indexed by class name, value is subtype
-            "of_bsn_set_ip_mask"             : 0,
-            "of_bsn_get_ip_mask_request"     : 1,
-            "of_bsn_get_ip_mask_reply"       : 2,
-            "of_bsn_set_mirroring"           : 3,
-            "of_bsn_get_mirroring_request"   : 4,
-            "of_bsn_get_mirroring_reply"     : 5,
-            "of_bsn_shell_command"           : 6,
-            "of_bsn_shell_output"            : 7,
-            "of_bsn_shell_status"            : 8,
-            "of_bsn_get_interfaces_request"  : 9,
-            "of_bsn_get_interfaces_reply"    : 10,
-            "of_bsn_set_pktin_suppression"   : 11,
-            "of_bsn_set_l2_table"            : 12,
-            "of_bsn_get_l2_table_request"    : 13,
-            "of_bsn_get_l2_table_reply"      : 14,
+            "of_bsn_set_ip_mask"                     : 0,
+            "of_bsn_get_ip_mask_request"             : 1,
+            "of_bsn_get_ip_mask_reply"               : 2,
+            "of_bsn_set_mirroring"                   : 3,
+            "of_bsn_get_mirroring_request"           : 4,
+            "of_bsn_get_mirroring_reply"             : 5,
+            "of_bsn_shell_command"                   : 6,
+            "of_bsn_shell_output"                    : 7,
+            "of_bsn_shell_status"                    : 8,
+            "of_bsn_get_interfaces_request"          : 9,
+            "of_bsn_get_interfaces_reply"            : 10,
+            "of_bsn_set_pktin_suppression"           : 11,
+            "of_bsn_set_l2_table"                    : 12,
+            "of_bsn_get_l2_table_request"            : 13,
+            "of_bsn_get_l2_table_reply"              : 14,
+            "of_bsn_virtual_port_create_request"     : 15,
+            "of_bsn_virtual_port_create_reply"       : 16,
+            "of_bsn_virtual_port_remove"             : 17,
             },
         nicira = {   # Nicira extensions, value is subtype
             "of_nicira_controller_role_request"      : 10,
@@ -807,32 +831,41 @@
         ),
     of_g.VERSION_1_1:dict(  # Version 1.0 extensions
         bsn = {   # BSN extensions; indexed by class name, value is subtype
-            "of_bsn_set_mirroring"           : 3,
-            "of_bsn_get_mirroring_request"   : 4,
-            "of_bsn_get_mirroring_reply"     : 5,
-            "of_bsn_get_interfaces_request"  : 9,
-            "of_bsn_get_interfaces_reply"    : 10,
-            "of_bsn_set_pktin_suppression"   : 11,
+            "of_bsn_set_mirroring"                   : 3,
+            "of_bsn_get_mirroring_request"           : 4,
+            "of_bsn_get_mirroring_reply"             : 5,
+            "of_bsn_get_interfaces_request"          : 9,
+            "of_bsn_get_interfaces_reply"            : 10,
+            "of_bsn_set_pktin_suppression"           : 11,
+            "of_bsn_virtual_port_create_request"     : 15,
+            "of_bsn_virtual_port_create_reply"       : 16,
+            "of_bsn_virtual_port_remove"             : 17,
             },
         ),
     of_g.VERSION_1_2:dict(  # Version 1.0 extensions
         bsn = {   # BSN extensions; indexed by class name, value is subtype
-            "of_bsn_set_mirroring"           : 3,
-            "of_bsn_get_mirroring_request"   : 4,
-            "of_bsn_get_mirroring_reply"     : 5,
-            "of_bsn_get_interfaces_request"  : 9,
-            "of_bsn_get_interfaces_reply"    : 10,
-            "of_bsn_set_pktin_suppression"   : 11,
+            "of_bsn_set_mirroring"                   : 3,
+            "of_bsn_get_mirroring_request"           : 4,
+            "of_bsn_get_mirroring_reply"             : 5,
+            "of_bsn_get_interfaces_request"          : 9,
+            "of_bsn_get_interfaces_reply"            : 10,
+            "of_bsn_set_pktin_suppression"           : 11,
+            "of_bsn_virtual_port_create_request"     : 15,
+            "of_bsn_virtual_port_create_reply"       : 16,
+            "of_bsn_virtual_port_remove"             : 17,
             },
         ),
     of_g.VERSION_1_3:dict(  # Version 1.0 extensions
         bsn = {   # BSN extensions; indexed by class name, value is subtype
-            "of_bsn_set_mirroring"           : 3,
-            "of_bsn_get_mirroring_request"   : 4,
-            "of_bsn_get_mirroring_reply"     : 5,
-            "of_bsn_get_interfaces_request"  : 9,
-            "of_bsn_get_interfaces_reply"    : 10,
-            "of_bsn_set_pktin_suppression"   : 11,
+            "of_bsn_set_mirroring"                   : 3,
+            "of_bsn_get_mirroring_request"           : 4,
+            "of_bsn_get_mirroring_reply"             : 5,
+            "of_bsn_get_interfaces_request"          : 9,
+            "of_bsn_get_interfaces_reply"            : 10,
+            "of_bsn_set_pktin_suppression"           : 11,
+            "of_bsn_virtual_port_create_request"     : 15,
+            "of_bsn_virtual_port_create_reply"       : 16,
+            "of_bsn_virtual_port_remove"             : 17,
             },
         ),
 }
diff --git a/of_g.py b/of_g.py
index 046273c..db040f1 100644
--- a/of_g.py
+++ b/of_g.py
@@ -219,6 +219,13 @@
         4: "of_port_desc_t",
         "short_name":"port_desc"
         },
+    of_bsn_vport_t = {
+        1: "of_bsn_vport_t",
+        2: "of_bsn_vport_t",
+        3: "of_bsn_vport_t",
+        4: "of_bsn_vport_t",
+        "short_name":"bsn_vport"
+        },
     of_fm_cmd_t = { # Flow mod command went from u16 to u8
         1: "uint16_t",
         2: "uint8_t",
diff --git a/openflow_input/bsn_vport b/openflow_input/bsn_vport
new file mode 100644
index 0000000..f23219d
--- /dev/null
+++ b/openflow_input/bsn_vport
@@ -0,0 +1,89 @@
+// Copyright 2013, Big Switch Networks, Inc.
+//
+// LoxiGen is licensed under the Eclipse Public License, version 1.0 (EPL), with
+// the following special exception:
+//
+// LOXI Exception
+//
+// As a special exception to the terms of the EPL, you may distribute libraries
+// generated by LoxiGen (LoxiGen Libraries) under the terms of your choice, provided
+// that copyright and licensing notices generated by LoxiGen are not altered or removed
+// from the LoxiGen Libraries and the notice provided below is (i) included in
+// the LoxiGen Libraries, if distributed in source code form and (ii) included in any
+// documentation for the LoxiGen Libraries, if distributed in binary form.
+//
+// Notice: "Copyright 2013, Big Switch Networks, Inc. This library was generated by the LoxiGen Compiler."
+//
+// You may not use this file except in compliance with the EPL or LOXI Exception. You may obtain
+// a copy of the EPL at:
+//
+// http://www.eclipse.org/legal/epl-v10.html
+//
+// 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
+// EPL for the specific language governing permissions and limitations
+// under the EPL.
+
+#version any
+
+// BSN Virtual port object header
+// FIXME For now, inheritance is not exercised.  See below.
+struct ofp_bsn_vport {
+    uint16_t type;  /* Discriminate virtual port type */
+    uint16_t length; /* Length in bytes of this structure with this header */
+    /* Remainder of data is specific to the port type */
+};
+
+
+// When the ingress or egress VID has this value, no outer tag should be used.
+// In this case, the corresponding TPID is ignored.
+// #define OF_BSN_VPORT_Q_IN_Q_UNTAGGED 0xffff
+
+// Q-in-Q virtual port specification
+
+struct of_bsn_vport_q_in_q {
+    uint16_t type;    /* 0 */
+    uint16_t length;  /* 16 */
+    uint32_t port_no;     /* OF port number of parent; usually phys port */
+    uint16_t ingress_tpid;
+    uint16_t ingress_vlan_id;
+    uint16_t egress_tpid;
+    uint16_t egress_vlan_id;
+};
+
+// Request from controller to switch to create vport
+struct ofp_bsn_virtual_port_create_request {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint32_t experimenter;  // OF_EXPERIMENTER_ID_BSN
+    uint32_t subtype;       // BSN_VIRTUAL_PORT_CREATE_REQUEST
+    // FIXME This should be an instance of the inheritance superclass
+    of_bsn_vport_q_in_q_t vport;   // Description of vport to create
+    // Additional data follows depending on header type
+};
+
+// Reply from switch to controller indicating port number created
+// vport_no must be 16 bits to be compatible with 1.0
+struct ofp_bsn_virtual_port_create_reply {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;           // Must match create_request
+    uint32_t experimenter;  // OF_EXPERIMENTER_ID_BSN
+    uint32_t subtype;       // BSN_VIRTUAL_PORT_CREATE_REPLY
+    uint32_t vport_no;      // The OF port number created.  16-bits for OF 1.0
+};
+
+// Request from controller to switch to remove a vport
+struct ofp_bsn_virtual_port_remove {
+    uint8_t version;
+    uint8_t type;
+    uint16_t length;
+    uint32_t xid;
+    uint32_t experimenter;  // OF_EXPERIMENTER_ID_BSN
+    uint32_t subtype;       // BSN_VIRTUAL_PORT_REMOVE
+    uint32_t vport_no;      // The OF port number to be removed
+};
