X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fadsal%2Farphandler%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Farphandler%2FARPReply.java;fp=opendaylight%2Fadsal%2Farphandler%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Farphandler%2FARPReply.java;h=1a446b83db92fe1a690e8ac94f181b6bf75705ac;hb=42c32160bfd41de57189bb246fec5ffb48ed8e9e;hp=0000000000000000000000000000000000000000;hpb=edf5bfcee83c750853253ccfd991ba7000f5f65b;p=controller.git diff --git a/opendaylight/adsal/arphandler/src/main/java/org/opendaylight/controller/arphandler/ARPReply.java b/opendaylight/adsal/arphandler/src/main/java/org/opendaylight/controller/arphandler/ARPReply.java new file mode 100644 index 0000000000..1a446b83db --- /dev/null +++ b/opendaylight/adsal/arphandler/src/main/java/org/opendaylight/controller/arphandler/ARPReply.java @@ -0,0 +1,151 @@ + +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.controller.arphandler; + +import java.net.InetAddress; +import java.util.Arrays; + +import org.opendaylight.controller.sal.core.NodeConnector; +import org.opendaylight.controller.sal.utils.HexEncode; +/* + * ARP Reply event wrapper + */ +public class ARPReply extends ARPEvent { + private static final long serialVersionUID = 1L; + private final NodeConnector port; + private final byte[] tMac; + private final byte[] sMac; + private final InetAddress sIP; + private final short vlan; + + @Override + public int hashCode() { + final int prime = 31; + int result = super.hashCode(); + result = prime * result + ((port == null) ? 0 : port.hashCode()); + result = prime * result + ((sIP == null) ? 0 : sIP.hashCode()); + result = prime * result + Arrays.hashCode(sMac); + result = prime * result + Arrays.hashCode(tMac); + result = prime * result + vlan; + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) { + return true; + } + if (!super.equals(obj)) { + return false; + } + if (!(obj instanceof ARPReply)) { + return false; + } + ARPReply other = (ARPReply) obj; + if (port == null) { + if (other.port != null) { + return false; + } + } else if (!port.equals(other.port)) { + return false; + } + if (sIP == null) { + if (other.sIP != null) { + return false; + } + } else if (!sIP.equals(other.sIP)) { + return false; + } + if (!Arrays.equals(sMac, other.sMac)) { + return false; + } + if (!Arrays.equals(tMac, other.tMac)) { + return false; + } + if (vlan != other.vlan) { + return false; + } + return true; + } + + public ARPReply(NodeConnector port, InetAddress sIP, byte[] sMAC, InetAddress tIP, byte[] tMAC, short vlan) { + super(tIP); + this.tMac = tMAC; + this.sIP = sIP; + this.sMac = sMAC; + this.port = port; + this.vlan = vlan; + } + + public ARPReply(InetAddress tIP, byte[] tMAC, short vlan) { + super(tIP); + this.tMac = tMAC; + this.sIP = null; + this.sMac = null; + this.port = null; + this.vlan = vlan; + } + + public byte[] getTargetMac() { + return tMac; + } + + public byte[] getSourceMac() { + return sMac; + } + + public InetAddress getSourceIP() { + return sIP; + } + + public NodeConnector getPort() { + return port; + } + + public short getVlan() { + return vlan; + } + + /* + * (non-Javadoc) + * + * @see java.lang.Object#toString() + */ + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("ARPReply ["); + if (port != null) { + builder.append("port=") + .append(port) + .append(", "); + } + if (tMac != null) { + builder.append("tMac=") + .append(HexEncode.bytesToHexString(tMac)) + .append(", "); + } + if (sMac != null) { + builder.append("sMac=") + .append(HexEncode.bytesToHexString(sMac)) + .append(", "); + } + if (sIP != null) { + builder.append("sIP=") + .append(sIP); + } + if (vlan != 0) { + builder.append(", vlan=") + .append(vlan); + } + builder.append("]"); + return builder.toString(); + } +}