diff --git a/src/main/java/com/bigswitch/floodlight/vendor/OFBsnPktinSuppressionSetRequestVendorData.java b/src/main/java/com/bigswitch/floodlight/vendor/OFBsnPktinSuppressionSetRequestVendorData.java new file mode 100644 index 0000000000000000000000000000000000000000..4f8a08e7624708560a34a0945b9d8a48e329d67d --- /dev/null +++ b/src/main/java/com/bigswitch/floodlight/vendor/OFBsnPktinSuppressionSetRequestVendorData.java @@ -0,0 +1,124 @@ +package com.bigswitch.floodlight.vendor; + +import org.jboss.netty.buffer.ChannelBuffer; +import org.openflow.protocol.Instantiable; +import org.openflow.protocol.vendor.OFVendorData; + +public class OFBsnPktinSuppressionSetRequestVendorData + extends OFBigSwitchVendorData { + protected static Instantiable<OFVendorData> instantiableSingleton = + new Instantiable<OFVendorData>() { + @Override + public OFVendorData instantiate() { + return new OFBsnL2TableSetVendorData(); + } + }; + + /** + * @return a subclass of Instantiable<OFVendorData> that instantiates + * an instance of OFBsnL2TableSetVendorData. + */ + public static Instantiable<OFVendorData> getInstantiable() { + return instantiableSingleton; + } + + public static final int BSN_PKTIN_SUPPRESSION_SET_REQUEST = 11; + /* + * uint8_t enabled; // 0 to disable the extension, 1 to enable it + * uint8_t pad; + * uint16_t idle_timeout; // idle_timeout for new flows + * uint16_t hard_timeout; // idle_timeout for new flows + * uint16_t priority; // priority for new flows + * uint64_t cookie; // cookie for new flows + */ + + protected boolean suppressionEnabled; + protected short idleTimeout; + protected short hardTimeout; + protected short priority; + protected long cookie; + + public OFBsnPktinSuppressionSetRequestVendorData() { + super(BSN_PKTIN_SUPPRESSION_SET_REQUEST); + } + + public OFBsnPktinSuppressionSetRequestVendorData(boolean suppressionEnabled, + short idleTimeout, + short hardTimeout, + short priority, + long cookie) { + super(BSN_PKTIN_SUPPRESSION_SET_REQUEST); + this.suppressionEnabled = suppressionEnabled; + this.idleTimeout = idleTimeout; + this.hardTimeout = hardTimeout; + this.priority = priority; + this.cookie = cookie; + } + + public boolean isSuppressionEnabled() { + return suppressionEnabled; + } + + public short getIdleTimeout() { + return idleTimeout; + } + + public short getHardTimeout() { + return hardTimeout; + } + + public short getPriority() { + return priority; + } + + public long getCookie() { + return cookie; + } + + public void setSuppressionEnabled(boolean suppressionEnabled) { + this.suppressionEnabled = suppressionEnabled; + } + + public void setIdleTimeout(short idleTimeout) { + this.idleTimeout = idleTimeout; + } + + public void setHardTimeout(short hardTimeout) { + this.hardTimeout = hardTimeout; + } + + public void setPriority(short priority) { + this.priority = priority; + } + + public void setCookie(long cookie) { + this.cookie = cookie; + } + + @Override + public int getLength() { + return super.getLength() + 16; + } + + @Override + public void readFrom(ChannelBuffer data, int length) { + super.readFrom(data, length); + suppressionEnabled = (data.readByte() != 0); + data.readByte(); + idleTimeout = data.readShort(); + hardTimeout = data.readShort(); + priority = data.readShort(); + cookie = data.readLong(); + } + + @Override + public void writeTo(ChannelBuffer data) { + super.writeTo(data); + data.writeByte(suppressionEnabled ? 1 : 0); + data.writeByte(0); // pad + data.writeShort(idleTimeout); + data.writeShort(hardTimeout); + data.writeShort(priority); + data.writeLong(cookie); + } +}