Merge into master from pull request #319:
Adding an oxm for mpls BoS indicator bit (https://github.com/floodlight/loxigen/pull/319)
diff --git a/c_gen/templates/loci_show.h b/c_gen/templates/loci_show.h
index 3624bcd..239bf57 100644
--- a/c_gen/templates/loci_show.h
+++ b/c_gen/templates/loci_show.h
@@ -416,5 +416,6 @@
 #define LOCI_SHOW_u8_loglevel(writer, cookie, val) LOCI_SHOW_u8(writer, cookie, val)
 #define LOCI_SHOW_u32_vrf(write, cookie, val) LOCI_SHOW_u32(writer, cookie, val)
 #define LOCI_SHOW_u32_bsn_vlan_xlate_port_group_id(writer, cookie, val) LOCI_SHOW_u32(writer, cookie, val)
+#define LOCI_SHOW_u8_mpls_bos(writer, cookie, val) LOCI_SHOW_u8(writer, cookie, val)
 
 #endif /* _LOCI_SHOW_H_ */
diff --git a/java_gen/java_type.py b/java_gen/java_type.py
index abd9e5b..e0f0680 100644
--- a/java_gen/java_type.py
+++ b/java_gen/java_type.py
@@ -614,6 +614,8 @@
         'of_oxm_mpls_label_masked' : { 'value' : u32obj, 'value_mask' : u32obj },
         'of_oxm_mpls_tc' : { 'value' : u8obj },
         'of_oxm_mpls_tc_masked' : { 'value' : u8obj, 'value_mask' : u8obj },
+        'of_oxm_mpls_bos' : { 'value' : boolean_value },
+        'of_oxm_mpls_bos_masked' : { 'value' : boolean_value, 'value_mask' : boolean_value },
 
         'of_oxm_bsn_in_ports_128' : { 'value': port_bitmap },
         'of_oxm_bsn_in_ports_128_masked' : { 'value': port_bitmap, 'value_mask': port_bitmap },
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchField.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchField.java
index 78e6075..2fb58b7 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchField.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchField.java
@@ -178,6 +178,10 @@
             new MatchField<U8>("mpls_tc", MatchFields.MPLS_TC,
                     new Prerequisite<EthType>(MatchField.ETH_TYPE, EthType.MPLS_UNICAST, EthType.MPLS_MULTICAST));
 
+    public final static MatchField<OFBooleanValue> MPLS_BOS =
+            new MatchField<OFBooleanValue>("mpls_bos", MatchFields.MPLS_BOS,
+                    new Prerequisite<EthType>(MatchField.ETH_TYPE, EthType.MPLS_UNICAST, EthType.MPLS_MULTICAST));
+
     public final static MatchField<U64> TUNNEL_ID = 
             new MatchField<U64>("tunnel_id", MatchFields.TUNNEL_ID);
 
diff --git a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchFields.java b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchFields.java
index 863634e..77494cb 100644
--- a/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchFields.java
+++ b/java_gen/pre-written/src/main/java/org/projectfloodlight/openflow/protocol/match/MatchFields.java
@@ -38,6 +38,7 @@
     IPV6_ND_TLL,
     MPLS_LABEL,
     MPLS_TC,
+    MPLS_BOS,
     TUNNEL_ID,
     BSN_IN_PORTS_128,
     BSN_LAG_ID,
diff --git a/openflow_input/oxm-1.3 b/openflow_input/oxm-1.3
index 2dbab42..8574236 100644
--- a/openflow_input/oxm-1.3
+++ b/openflow_input/oxm-1.3
@@ -40,3 +40,14 @@
     uint64_t value;
     uint64_t value_mask;
 };
+
+struct of_oxm_mpls_bos : of_oxm {
+    uint32_t type_len == 0x80004801;
+    uint8_t value;
+};
+
+struct of_oxm_mpls_bos_masked : of_oxm {
+    uint32_t type_len == 0x80004902;
+    uint8_t value;
+    uint8_t value_mask;
+};
diff --git a/test_data/of13/oxm_mpls_bos.data b/test_data/of13/oxm_mpls_bos.data
new file mode 100644
index 0000000..8d43f33
--- /dev/null
+++ b/test_data/of13/oxm_mpls_bos.data
@@ -0,0 +1,7 @@
+-- binary
+80 00 # class
+48 # type/masked
+01 # length
+01 # value
+-- python
+ofp.oxm.mpls_bos(value=01)