/* * Copyright (c) 2011,2013 Big Switch Networks, Inc. * * Licensed under the Eclipse Public License, Version 1.0 (the * "License"); you may not use this file except in compliance with the * License. You may obtain a copy of the License at * * http://www.eclipse.org/legal/epl-v10.html * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or * implied. See the License for the specific language governing * permissions and limitations under the License. */ package org.sdnplatform.linkdiscovery; import org.openflow.protocol.OFPhysicalPort.OFPortState; public class LinkInfo { public LinkInfo(Long firstSeenTime, Long lastLldpReceivedTime, Long lastBddpReceivedTime, int srcPortState, int dstPortState) { super(); this.srcPortState = srcPortState; this.dstPortState = dstPortState; this.firstSeenTime = firstSeenTime; this.lastLldpReceivedTime = lastLldpReceivedTime; this.lastBddpReceivedTime = lastBddpReceivedTime; } protected Integer srcPortState; protected Integer dstPortState; protected Long firstSeenTime; protected Long lastLldpReceivedTime; /* Standard LLLDP received time */ protected Long lastBddpReceivedTime; /* Modified LLDP received time */ /** The port states stored here are topology's last knowledge of * the state of the port. This mostly mirrors the state * maintained in the port list in IOFSwitch (i.e. the one returned * from getPort), except that during a port status message the * IOFSwitch port state will already have been updated with the * new port state, so topology needs to keep its own copy so that * it can determine if the port state has changed and therefore * requires the new state to be written to storage. */ public boolean linkStpBlocked() { return ((srcPortState & OFPortState.OFPPS_STP_MASK.getValue()) == OFPortState.OFPPS_STP_BLOCK.getValue()) || ((dstPortState & OFPortState.OFPPS_STP_MASK.getValue()) == OFPortState.OFPPS_STP_BLOCK.getValue()); } public Long getFirstSeenTime() { return firstSeenTime; } public void setFirstSeenTime(Long firstSeenTime) { this.firstSeenTime = firstSeenTime; } public Long getUnicastValidTime() { return lastLldpReceivedTime; } public void setUnicastValidTime(Long unicastValidTime) { this.lastLldpReceivedTime = unicastValidTime; } public Long getMulticastValidTime() { return lastBddpReceivedTime; } public void setMulticastValidTime(Long multicastValidTime) { this.lastBddpReceivedTime = multicastValidTime; } public Integer getSrcPortState() { return srcPortState; } public void setSrcPortState(Integer srcPortState) { this.srcPortState = srcPortState; } public Integer getDstPortState() { return dstPortState; } public void setDstPortState(int dstPortState) { this.dstPortState = dstPortState; } /* (non-Javadoc) * @see java.lang.Object#hashCode() */ @Override public int hashCode() { final int prime = 5557; int result = 1; result = prime * result + ((firstSeenTime == null) ? 0 : firstSeenTime.hashCode()); result = prime * result + ((lastLldpReceivedTime == null) ? 0 : lastLldpReceivedTime.hashCode()); result = prime * result + ((lastBddpReceivedTime == null) ? 0 : lastBddpReceivedTime.hashCode()); result = prime * result + ((srcPortState == null) ? 0 : srcPortState.hashCode()); result = prime * result + ((dstPortState == null) ? 0 : dstPortState.hashCode()); return result; } /* (non-Javadoc) * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (!(obj instanceof LinkInfo)) return false; LinkInfo other = (LinkInfo) obj; if (firstSeenTime == null) { if (other.firstSeenTime != null) return false; } else if (!firstSeenTime.equals(other.firstSeenTime)) return false; if (lastLldpReceivedTime == null) { if (other.lastLldpReceivedTime != null) return false; } else if (!lastLldpReceivedTime.equals(other.lastLldpReceivedTime)) return false; if (lastBddpReceivedTime == null) { if (other.lastBddpReceivedTime != null) return false; } else if (!lastBddpReceivedTime.equals(other.lastBddpReceivedTime)) return false; if (srcPortState == null) { if (other.srcPortState != null) return false; } else if (!srcPortState.equals(other.srcPortState)) return false; if (dstPortState == null) { if (other.dstPortState != null) return false; } else if (!dstPortState.equals(other.dstPortState)) return false; return true; } /* (non-Javadoc) * @see java.lang.Object#toString() */ @Override public String toString() { return "LinkInfo [unicastValidTime=" + ((lastLldpReceivedTime == null) ? "null" : lastLldpReceivedTime) + ", multicastValidTime=" + ((lastBddpReceivedTime == null) ? "null" : lastBddpReceivedTime) + ", srcPortState=" + ((srcPortState == null) ? "null" : srcPortState) + ", dstPortState=" + ((dstPortState == null) ? "null" : srcPortState) + "]"; } }