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);
}
@Override
public int hashCode() {
final int prime = 31;
int result = super.hashCode();
result = prime * result + (int) (cookie ^ (cookie >>> 32));
result = prime * result + hardTimeout;
result = prime * result + idleTimeout;
result = prime * result + priority;
result = prime * result + (suppressionEnabled ? 1231 : 1237);
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj) return true;
if (!super.equals(obj)) return false;
if (getClass() != obj.getClass()) return false;
OFBsnPktinSuppressionSetRequestVendorData other = (OFBsnPktinSuppressionSetRequestVendorData) obj;
if (cookie != other.cookie) return false;
if (hardTimeout != other.hardTimeout) return false;
if (idleTimeout != other.idleTimeout) return false;
if (priority != other.priority) return false;
if (suppressionEnabled != other.suppressionEnabled) return false;
return true;
}
}