Move adsal into its own subdirectory.
[controller.git] / opendaylight / adsal / arphandler / src / main / java / org / opendaylight / controller / arphandler / ARPReply.java
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 (file)
index 0000000..1a446b8
--- /dev/null
@@ -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();
+    }
+}