Updated Java types according to new design
diff --git a/java_gen/pre-written/src/main/java/org/openflow/types/EthType.java b/java_gen/pre-written/src/main/java/org/openflow/types/EthType.java
index d319e57..b86a38f 100644
--- a/java_gen/pre-written/src/main/java/org/openflow/types/EthType.java
+++ b/java_gen/pre-written/src/main/java/org/openflow/types/EthType.java
@@ -1,5 +1,266 @@
package org.openflow.types;
-public class EthType {
+import org.jboss.netty.buffer.ChannelBuffer;
+import org.openflow.exceptions.OFParseError;
+
+/**
+ * EtherType field representation.
+ *
+ * @author Yotam Harchol (yotam.harchol@bigswitch.com)
+ */
+public class EthType implements OFValueType {
+ static final int LENGTH = 2;
+
+ private final int rawValue;
+
+ static final int ETH_TYPE_VAL_IPv4 = 0x0800; // Internet Protocol version 4 (IPv4)
+ static final int ETH_TYPE_VAL_ARP = 0x0806; // Address Resolution Protocol (ARP)
+ static final int ETH_TYPE_VAL_WAKE_ON_LAN = 0x0842; // Wake-on-LAN[3]
+ static final int ETH_TYPE_VAL_TRILL = 0x22F3; // IETF TRILL Protocol
+ static final int ETH_TYPE_VAL_DECNET_IV = 0x6003; // DECnet Phase IV
+ static final int ETH_TYPE_VAL_REV_ARP = 0x8035; // Reverse Address Resolution Protocol
+ static final int ETH_TYPE_VAL_APPLE_TALK = 0x809B; // AppleTalk (Ethertalk)
+ static final int ETH_TYPE_VAL_APPLE_TALK_ARP = 0x80F3; // AppleTalk Address Resolution Protocol (AARP)
+ static final int ETH_TYPE_VAL_VLAN_FRAME = 0x8100; // VLAN-tagged frame (IEEE 802.1Q) & Shortest Path Bridging IEEE 802.1aq[4]
+ static final int ETH_TYPE_VAL_IPX_8137 = 0x8137; // IPX
+ static final int ETH_TYPE_VAL_IPX_8138 = 0x8138; // IPX
+ static final int ETH_TYPE_VAL_QNX = 0x8204; // QNX Qnet
+ static final int ETH_TYPE_VAL_IPv6 = 0x86DD; // Internet Protocol Version 6 (IPv6)
+ static final int ETH_TYPE_VAL_ETH_FLOW = 0x8808; // Ethernet flow control
+ static final int ETH_TYPE_VAL_SLOW_PROTOCOLS = 0x8809; // Slow Protocols (IEEE 802.3)
+ static final int ETH_TYPE_VAL_COBRANET = 0x8819; // CobraNet
+ static final int ETH_TYPE_VAL_MPLS_UNICAST = 0x8847; // MPLS unicast
+ static final int ETH_TYPE_VAL_MPLS_MULTICAST = 0x8848; // MPLS multicast
+ static final int ETH_TYPE_VAL_PPPoE_DISCOVERY = 0x8863; // PPPoE Discovery Stage
+ static final int ETH_TYPE_VAL_PPPoE_SESSION = 0x8864; // PPPoE Session Stage
+ static final int ETH_TYPE_VAL_JUMBO_FRAMES = 0x8870; // Jumbo Frames
+ static final int ETH_TYPE_VAL_HOMEPLUG_10 = 0x887B; // HomePlug 1.0 MME
+ static final int ETH_TYPE_VAL_EAP_OVER_LAN = 0x888E; // EAP over LAN (IEEE 802.1X)
+ static final int ETH_TYPE_VAL_PROFINET = 0x8892; // PROFINET Protocol
+ static final int ETH_TYPE_VAL_HYPERSCSI = 0x889A; // HyperSCSI (SCSI over Ethernet)
+ static final int ETH_TYPE_VAL_ATA_OVER_ETH = 0x88A2; // ATA over Ethernet
+ static final int ETH_TYPE_VAL_ETHERCAT = 0x88A4; // EtherCAT Protocol
+ static final int ETH_TYPE_VAL_BRIDGING = 0x88A8; // Provider Bridging (IEEE 802.1ad) & Shortest Path Bridging IEEE 802.1aq[5]
+ static final int ETH_TYPE_VAL_POWERLINK = 0x88AB; // Ethernet Powerlink[citation needed]
+ static final int ETH_TYPE_VAL_LLDP = 0x88CC; // Link Layer Discovery Protocol (LLDP)
+ static final int ETH_TYPE_VAL_SERCOS = 0x88CD; // SERCOS III
+ static final int ETH_TYPE_VAL_HOMEPLUG_AV = 0x88E1; // HomePlug AV MME[citation needed]
+ static final int ETH_TYPE_VAL_MRP = 0x88E3; // Media Redundancy Protocol (IEC62439-2)
+ static final int ETH_TYPE_VAL_MAC_SEC = 0x88E5; // MAC security (IEEE 802.1AE)
+ static final int ETH_TYPE_VAL_PTP = 0x88F7; // Precision Time Protocol (IEEE 1588)
+ static final int ETH_TYPE_VAL_CFM = 0x8902; // IEEE 802.1ag Connectivity Fault Management (CFM) Protocol / ITU-T Recommendation Y.1731 (OAM)
+ static final int ETH_TYPE_VAL_FCoE = 0x8906; // Fibre Channel over Ethernet (FCoE)
+ static final int ETH_TYPE_VAL_FCoE_INIT = 0x8914; // FCoE Initialization Protocol
+ static final int ETH_TYPE_VAL_RoCE = 0x8915; // RDMA over Converged Ethernet (RoCE)
+ static final int ETH_TYPE_VAL_HSR = 0x892F; // High-availability Seamless Redundancy (HSR)
+ static final int ETH_TYPE_VAL_CONF_TEST = 0x9000; // Ethernet Configuration Testing Protocol[6]
+ static final int ETH_TYPE_VAL_Q_IN_Q = 0x9100; // Q-in-Q
+ static final int ETH_TYPE_VAL_LLT = 0xCAFE; // Veritas Low Latency Transport (LLT)[7] for Veritas Cluster Server
+
+ public static final EthType ETH_TYPE_IPv4 = new EthType(ETH_TYPE_VAL_IPv4);
+ public static final EthType ETH_TYPE_ARP = new EthType(ETH_TYPE_VAL_ARP);
+ public static final EthType ETH_TYPE_WAKE_ON_LAN = new EthType(ETH_TYPE_VAL_WAKE_ON_LAN);
+ public static final EthType ETH_TYPE_TRILL = new EthType(ETH_TYPE_VAL_TRILL);
+ public static final EthType ETH_TYPE_DECNET_IV = new EthType(ETH_TYPE_VAL_DECNET_IV);
+ public static final EthType ETH_TYPE_REV_ARP = new EthType(ETH_TYPE_VAL_REV_ARP );
+ public static final EthType ETH_TYPE_APPLE_TALK = new EthType(ETH_TYPE_VAL_APPLE_TALK);
+ public static final EthType ETH_TYPE_APPLE_TALK_ARP = new EthType(ETH_TYPE_VAL_APPLE_TALK_ARP);
+ public static final EthType ETH_TYPE_VLAN_FRAME = new EthType(ETH_TYPE_VAL_VLAN_FRAME );
+ public static final EthType ETH_TYPE_IPX_8137 = new EthType(ETH_TYPE_VAL_IPX_8137 );
+ public static final EthType ETH_TYPE_IPX_8138 = new EthType(ETH_TYPE_VAL_IPX_8138 );
+ public static final EthType ETH_TYPE_QNX = new EthType(ETH_TYPE_VAL_QNX );
+ public static final EthType ETH_TYPE_IPv6 = new EthType(ETH_TYPE_VAL_IPv6 );
+ public static final EthType ETH_TYPE_ETH_FLOW = new EthType(ETH_TYPE_VAL_ETH_FLOW);
+ public static final EthType ETH_TYPE_SLOW_PROTOCOLS = new EthType(ETH_TYPE_VAL_SLOW_PROTOCOLS );
+ public static final EthType ETH_TYPE_COBRANET = new EthType(ETH_TYPE_VAL_COBRANET );
+ public static final EthType ETH_TYPE_MPLS_UNICAST = new EthType(ETH_TYPE_VAL_MPLS_UNICAST );
+ public static final EthType ETH_TYPE_MPLS_MULTICAST = new EthType(ETH_TYPE_VAL_MPLS_MULTICAST );
+ public static final EthType ETH_TYPE_PPPoE_DISCOVERY = new EthType(ETH_TYPE_VAL_PPPoE_DISCOVERY);
+ public static final EthType ETH_TYPE_PPPoE_SESSION = new EthType(ETH_TYPE_VAL_PPPoE_SESSION );
+ public static final EthType ETH_TYPE_JUMBO_FRAMES = new EthType(ETH_TYPE_VAL_JUMBO_FRAMES );
+ public static final EthType ETH_TYPE_HOMEPLUG_10 = new EthType(ETH_TYPE_VAL_HOMEPLUG_10 );
+ public static final EthType ETH_TYPE_EAP_OVER_LAN = new EthType(ETH_TYPE_VAL_EAP_OVER_LAN );
+ public static final EthType ETH_TYPE_PROFINET = new EthType(ETH_TYPE_VAL_PROFINET );
+ public static final EthType ETH_TYPE_HYPERSCSI = new EthType(ETH_TYPE_VAL_HYPERSCSI );
+ public static final EthType ETH_TYPE_ATA_OVER_ETH = new EthType(ETH_TYPE_VAL_ATA_OVER_ETH);
+ public static final EthType ETH_TYPE_ETHERCAT = new EthType(ETH_TYPE_VAL_ETHERCAT );
+ public static final EthType ETH_TYPE_BRIDGING = new EthType(ETH_TYPE_VAL_BRIDGING );
+ public static final EthType ETH_TYPE_POWERLINK = new EthType(ETH_TYPE_VAL_POWERLINK );
+ public static final EthType ETH_TYPE_LLDP = new EthType(ETH_TYPE_VAL_LLDP );
+ public static final EthType ETH_TYPE_SERCOS = new EthType(ETH_TYPE_VAL_SERCOS );
+ public static final EthType ETH_TYPE_HOMEPLUG_AV = new EthType(ETH_TYPE_VAL_HOMEPLUG_AV );
+ public static final EthType ETH_TYPE_MRP = new EthType(ETH_TYPE_VAL_MRP );
+ public static final EthType ETH_TYPE_MAC_SEC = new EthType(ETH_TYPE_VAL_MAC_SEC);
+ public static final EthType ETH_TYPE_PTP = new EthType(ETH_TYPE_VAL_PTP );
+ public static final EthType ETH_TYPE_CFM = new EthType(ETH_TYPE_VAL_CFM );
+ public static final EthType ETH_TYPE_FCoE = new EthType(ETH_TYPE_VAL_FCoE );
+ public static final EthType ETH_TYPE_FCoE_INIT = new EthType(ETH_TYPE_VAL_FCoE_INIT );
+ public static final EthType ETH_TYPE_RoCE = new EthType(ETH_TYPE_VAL_RoCE );
+ public static final EthType ETH_TYPE_HSR = new EthType(ETH_TYPE_VAL_HSR );
+ public static final EthType ETH_TYPE_CONF_TEST = new EthType(ETH_TYPE_VAL_CONF_TEST );
+ public static final EthType ETH_TYPE_Q_IN_Q = new EthType(ETH_TYPE_VAL_Q_IN_Q );
+ public static final EthType ETH_TYPE_LLT = new EthType(ETH_TYPE_VAL_LLT );
+
+ private EthType(int type) {
+ this.rawValue = type;
+ }
+
+ @Override
+ public int getLength() {
+ return LENGTH;
+ }
+
+ volatile byte[] bytesCache = null;
+
+ @Override
+ public byte[] getBytes() {
+ if (bytesCache == null) {
+ synchronized (this) {
+ if (bytesCache == null) {
+ bytesCache = new byte[] {
+ (byte) ((rawValue >>> 8) & 0xFF),
+ (byte) ((rawValue >>> 0) & 0xFF)
+ };
+ }
+ }
+ }
+ return bytesCache;
+ }
+
+ public static EthType of(int type) {
+ switch (type) {
+ case ETH_TYPE_VAL_IPv4:
+ return ETH_TYPE_IPv4;
+ case ETH_TYPE_VAL_ARP:
+ return ETH_TYPE_ARP;
+ case ETH_TYPE_VAL_WAKE_ON_LAN:
+ return ETH_TYPE_WAKE_ON_LAN;
+ case ETH_TYPE_VAL_TRILL:
+ return ETH_TYPE_TRILL;
+ case ETH_TYPE_VAL_DECNET_IV:
+ return ETH_TYPE_DECNET_IV;
+ case ETH_TYPE_VAL_REV_ARP:
+ return ETH_TYPE_REV_ARP;
+ case ETH_TYPE_VAL_APPLE_TALK:
+ return ETH_TYPE_APPLE_TALK;
+ case ETH_TYPE_VAL_APPLE_TALK_ARP:
+ return ETH_TYPE_APPLE_TALK_ARP;
+ case ETH_TYPE_VAL_VLAN_FRAME:
+ return ETH_TYPE_VLAN_FRAME;
+ case ETH_TYPE_VAL_IPX_8137:
+ return ETH_TYPE_IPX_8137;
+ case ETH_TYPE_VAL_IPX_8138:
+ return ETH_TYPE_IPX_8138;
+ case ETH_TYPE_VAL_QNX:
+ return ETH_TYPE_QNX;
+ case ETH_TYPE_VAL_IPv6:
+ return ETH_TYPE_IPv6;
+ case ETH_TYPE_VAL_ETH_FLOW:
+ return ETH_TYPE_ETH_FLOW;
+ case ETH_TYPE_VAL_SLOW_PROTOCOLS:
+ return ETH_TYPE_SLOW_PROTOCOLS;
+ case ETH_TYPE_VAL_COBRANET:
+ return ETH_TYPE_COBRANET;
+ case ETH_TYPE_VAL_MPLS_UNICAST:
+ return ETH_TYPE_MPLS_UNICAST;
+ case ETH_TYPE_VAL_MPLS_MULTICAST:
+ return ETH_TYPE_MPLS_MULTICAST;
+ case ETH_TYPE_VAL_PPPoE_DISCOVERY:
+ return ETH_TYPE_PPPoE_DISCOVERY;
+ case ETH_TYPE_VAL_PPPoE_SESSION:
+ return ETH_TYPE_PPPoE_SESSION;
+ case ETH_TYPE_VAL_JUMBO_FRAMES:
+ return ETH_TYPE_JUMBO_FRAMES;
+ case ETH_TYPE_VAL_HOMEPLUG_10:
+ return ETH_TYPE_HOMEPLUG_10;
+ case ETH_TYPE_VAL_EAP_OVER_LAN:
+ return ETH_TYPE_EAP_OVER_LAN;
+ case ETH_TYPE_VAL_PROFINET:
+ return ETH_TYPE_PROFINET;
+ case ETH_TYPE_VAL_HYPERSCSI:
+ return ETH_TYPE_HYPERSCSI;
+ case ETH_TYPE_VAL_ATA_OVER_ETH:
+ return ETH_TYPE_ATA_OVER_ETH;
+ case ETH_TYPE_VAL_ETHERCAT:
+ return ETH_TYPE_ETHERCAT;
+ case ETH_TYPE_VAL_BRIDGING:
+ return ETH_TYPE_BRIDGING;
+ case ETH_TYPE_VAL_POWERLINK:
+ return ETH_TYPE_POWERLINK;
+ case ETH_TYPE_VAL_LLDP:
+ return ETH_TYPE_LLDP;
+ case ETH_TYPE_VAL_SERCOS:
+ return ETH_TYPE_SERCOS;
+ case ETH_TYPE_VAL_HOMEPLUG_AV:
+ return ETH_TYPE_HOMEPLUG_AV;
+ case ETH_TYPE_VAL_MRP:
+ return ETH_TYPE_MRP;
+ case ETH_TYPE_VAL_MAC_SEC:
+ return ETH_TYPE_MAC_SEC;
+ case ETH_TYPE_VAL_PTP:
+ return ETH_TYPE_PTP;
+ case ETH_TYPE_VAL_CFM:
+ return ETH_TYPE_CFM;
+ case ETH_TYPE_VAL_FCoE:
+ return ETH_TYPE_FCoE;
+ case ETH_TYPE_VAL_FCoE_INIT:
+ return ETH_TYPE_FCoE_INIT;
+ case ETH_TYPE_VAL_RoCE:
+ return ETH_TYPE_RoCE;
+ case ETH_TYPE_VAL_HSR:
+ return ETH_TYPE_HSR;
+ case ETH_TYPE_VAL_CONF_TEST:
+ return ETH_TYPE_CONF_TEST;
+ case ETH_TYPE_VAL_Q_IN_Q:
+ return ETH_TYPE_Q_IN_Q;
+ case ETH_TYPE_VAL_LLT:
+ return ETH_TYPE_LLT;
+ default:
+ // TODO: What's here?
+ return new EthType(type);
+ }
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (!(obj instanceof EthType))
+ return false;
+ EthType o = (EthType)obj;
+ if (o.rawValue != this.rawValue)
+ return false;
+ return true;
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 37;
+ int result = 1;
+ result = prime * result + rawValue;
+ return result;
+ }
+
+ @Override
+ public String toString() {
+ return Integer.toHexString(rawValue);
+ }
+
+ public static final Serializer<EthType> SERIALIZER_V10 = new SerializerV10();
+ public static final Serializer<EthType> SERIALIZER_V11 = SERIALIZER_V10;
+ public static final Serializer<EthType> SERIALIZER_V12 = SERIALIZER_V10;
+ public static final Serializer<EthType> SERIALIZER_V13 = SERIALIZER_V10;
+
+ private static class SerializerV10 implements OFValueType.Serializer<EthType> {
+
+ @Override
+ public void writeTo(EthType value, ChannelBuffer c) {
+ c.writeShort(value.rawValue);
+ }
+
+ @Override
+ public EthType readFrom(ChannelBuffer c) throws OFParseError {
+ return EthType.of(c.readUnsignedShort());
+ }
+
+ }
}