Merge "Adding dest IP/MAC in ArpResponseReceived"
authorSam Hague <shague@redhat.com>
Mon, 27 Mar 2017 12:52:10 +0000 (12:52 +0000)
committerGerrit Code Review <gerrit@opendaylight.org>
Mon, 27 Mar 2017 12:52:10 +0000 (12:52 +0000)
1  2 
arputil/arputil-impl/src/main/java/org/opendaylight/genius/arputil/internal/ArpUtilImpl.java

index 4b38cf8adaea285b6dfd637dd88280f58dd77484,a34d306d69c4ea6b1845707e90f793c9bedccc78..11a956a03c588b92e6d4a139e8c20f129e77b21c
@@@ -229,7 -229,7 +229,7 @@@ public class ArpUtilImpl extends Abstra
                  checkNotNull(portResult);
                  dpnId = portResult.getDpid();
                  Long portid = portResult.getPortno();
 -                checkArgument(null != dpnId && BigInteger.ZERO != dpnId, DPN_NOT_FOUND_ERROR, interfaceName);
 +                checkArgument(null != dpnId && !BigInteger.ZERO.equals(dpnId), DPN_NOT_FOUND_ERROR, interfaceName);
  
                  NodeConnectorRef ref = MDSALUtil.getNodeConnRef(dpnId, portid.toString());
                  checkNotNull(ref, NODE_CONNECTOR_NOT_FOUND_ERROR, interfaceName);
              dpnId = portResult.getDpid();
              Long portid = portResult.getPortno();
              NodeConnectorRef ref = MDSALUtil.getNodeConnRef(dpnId, portid.toString());
 -            checkArgument(null != dpnId && BigInteger.ZERO != dpnId, DPN_NOT_FOUND_ERROR, interfaceName);
 +            checkArgument(null != dpnId && !BigInteger.ZERO.equals(dpnId), DPN_NOT_FOUND_ERROR, interfaceName);
              checkNotNull(ref, NODE_CONNECTOR_NOT_FOUND_ERROR, interfaceName);
  
              LOG.trace("sendArpRequest received dpnId {} out interface {}", dpnId, interfaceName);
                      addr = dstInetAddr;
                  }
                  byte[] srcMac = ethernet.getSourceMACAddress();
+                 byte[] dstMac = ethernet.getDestinationMACAddress();
  
                  NodeConnectorRef ref = packetReceived.getIngress();
  
                      fireArpReqRecvdNotification(interfaceName, srcInetAddr, srcMac, dstInetAddr, tableId,
                              metadata.getMetadata());
                  } else {
-                     fireArpRespRecvdNotification(interfaceName, srcInetAddr, srcMac, tableId, metadata.getMetadata());
+                     fireArpRespRecvdNotification(interfaceName, srcInetAddr, srcMac, tableId, metadata.getMetadata(),
+                             dstInetAddr, dstMac);
                  }
                  if (macAddrs.get(srcInetAddr.getHostAddress()) != null) {
                      threadPool.submit(new MacResponderTask(arp));
          }
      }
  
-     private void fireArpRespRecvdNotification(String interfaceName, InetAddress inetAddr, byte[] macAddressBytes,
-             int tableId, BigInteger metadata) throws InterruptedException {
+     private void fireArpRespRecvdNotification(String interfaceName, InetAddress srcInetAddr, byte[] srcMacAddressBytes,
+             int tableId, BigInteger metadata, InetAddress dstInetAddr, byte[] dstMacAddressBytes)
+                     throws InterruptedException {
          ArpUtilCounters.arp_res_rcv.inc();
  
-         IpAddress ip = new IpAddress(inetAddr.getHostAddress().toCharArray());
-         String macAddress = NWUtil.toStringMacAddress(macAddressBytes);
-         PhysAddress mac = new PhysAddress(macAddress);
+         IpAddress srcIp = new IpAddress(srcInetAddr.getHostAddress().toCharArray());
+         IpAddress dstIp = new IpAddress(dstInetAddr.getHostAddress().toCharArray());
+         String srcMacAddress = NWUtil.toStringMacAddress(srcMacAddressBytes);
+         PhysAddress srcMac = new PhysAddress(srcMacAddress);
+         String dstMacAddress = NWUtil.toStringMacAddress(dstMacAddressBytes);
+         PhysAddress dstMac = new PhysAddress(dstMacAddress);
          ArpResponseReceivedBuilder builder = new ArpResponseReceivedBuilder();
          builder.setInterface(interfaceName);
-         builder.setIpaddress(ip);
+         builder.setSrcIpaddress(srcIp);
          builder.setOfTableId((long) tableId);
-         builder.setMacaddress(mac);
+         builder.setSrcMac(srcMac);
          builder.setMetadata(metadata);
+         builder.setDstIpaddress(dstIp);
+         builder.setDstMac(dstMac);
          ListenableFuture<?> offerNotification = notificationPublishService.offerNotification(builder.build());
          if (offerNotification != null && offerNotification.equals(NotificationPublishService.REJECTED)) {
              ArpUtilCounters.arp_res_rcv_notification_rejected.inc();