package com.bigswitch.floodlight.vendor; import org.jboss.netty.buffer.ChannelBuffer; public class OFActionMirror extends OFActionBigSwitchVendor { public final static int MINIMUM_LENGTH = 12; public final static int BSN_ACTION_MIRROR = 1; protected int destPort; protected int vlanTag; protected byte copyStage; protected byte pad0; protected byte pad1; protected byte pad2; public OFActionMirror(short portNumber) { super(BSN_ACTION_MIRROR); super.setLength((short) (OFActionBigSwitchVendor.MINIMUM_LENGTH + OFActionMirror.MINIMUM_LENGTH)); this.destPort = portNumber; this.vlanTag = 0; this.copyStage = 0; } public int getDestPort() { return destPort; } public void setDestPort(int destPort) { this.destPort = destPort; } public int getVlanTag() { return vlanTag; } public void setVlanTag(int vlanTag) { this.vlanTag = vlanTag; } public byte getCopyStage() { return copyStage; } public void setCopyStage(byte copyStage) { this.copyStage = copyStage; } @Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = prime * result + copyStage; result = prime * result + destPort; result = prime * result + pad0; result = prime * result + pad1; result = prime * result + pad2; result = prime * result + vlanTag; 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; OFActionMirror other = (OFActionMirror) obj; if (copyStage != other.copyStage) return false; if (destPort != other.destPort) return false; if (pad0 != other.pad0) return false; if (pad1 != other.pad1) return false; if (pad2 != other.pad2) return false; if (vlanTag != other.vlanTag) return false; return true; } @Override public void readFrom(ChannelBuffer data) { super.readFrom(data); this.destPort = data.readInt(); this.vlanTag = data.readInt(); this.copyStage = data.readByte(); this.pad0 = data.readByte(); this.pad1 = data.readByte(); this.pad2 = data.readByte(); } @Override public void writeTo(ChannelBuffer data) { super.writeTo(data); data.writeInt(this.destPort); data.writeInt(this.vlanTag); data.writeByte(this.copyStage); data.writeByte(this.pad0); data.writeByte(this.pad1); data.writeByte(this.pad2); } @Override public String toString() { StringBuilder builder = new StringBuilder(); builder.append(type); builder.append("["); builder.append("BSN-MIRROR"); builder.append(", Dest Port: "); builder.append(destPort); builder.append(", Vlan: "); builder.append(vlanTag); builder.append(", Copy Stage: "); builder.append(copyStage); builder.append("]"); return builder.toString(); } }