-import java.math.BigInteger;
-import java.net.InetAddress;
-import java.net.UnknownHostException;
-import java.util.List;
-import java.util.concurrent.*;
-
-import static com.google.common.base.Preconditions.checkArgument;
-import static com.google.common.base.Preconditions.checkNotNull;
-
-public class ArpUtilImpl implements OdlArputilService,
- PacketProcessingListener, AutoCloseable {
-
- private static final String FAILED_TO_GET_SRC_IP_FOR_INTERFACE = "Failed to get src ip for %s";
-
- private static final String FAILED_TO_GET_SRC_MAC_FOR_INTERFACE = "Failed to get src mac for interface %s iid %s ";
-
- private static final String FAILED_TO_SEND_ARP_REQ_FOR_INTERFACE = "failed to send arp req for interface ";
-
- private static final String UNKNOWN_IP_ADDRESS_SUPPLIED = "unknown ip address supplied";
-
- private static final String NODE_CONNECTOR_NOT_FOUND_ERROR = "Node connector id not found for interface %s";
-
- private static final String DPN_NOT_FOUND_ERROR = "dpn not found for interface %s ";
-
- private static final short ARP_REQUEST_OP = (short) 1;
-
- private static final short ARP_RESPONSE_OP = (short) 2;
-
- private static final short ETH_TYPE_ARP = 0x0806;
-
- private static final Logger LOGGER = LoggerFactory
- .getLogger(ArpUtilImpl.class);
-
- static OdlInterfaceRpcService intfRpc;
-
- ExecutorService threadPool = Executors.newFixedThreadPool(1);
-
- DataBroker dataBroker;
- PacketProcessingService packetProcessingService;
- NotificationPublishService notificationPublishService;
- NotificationService notificationService;
- IMdsalApiManager mdsalMgr;
-
- RpcProviderRegistry rpc;
- ListenerRegistration<ArpUtilImpl> listenerRegistration;
-
- ConcurrentMap<String, String> macsDB = new ConcurrentHashMap<>();
- ConcurrentMap<String, SettableFuture<RpcResult<GetMacOutput>>> getMacFutures = new ConcurrentHashMap<>();
-
- public ArpUtilImpl(DataBroker db,
- PacketProcessingService packetProcessingService,
- NotificationPublishService notificationPublishService,
- NotificationService notificationService,
- IMdsalApiManager mdsalApiManager,
- RpcProviderRegistry rpc) {
-
- this.dataBroker = db;
+@Singleton
+public class ArpUtilImpl extends AbstractLifecycle implements OdlArputilService, PacketProcessingListener {
+ private static final Logger LOG = LoggerFactory.getLogger(ArpUtilImpl.class);
+ private static final String MODULENAME = "odl.genius.arputil.";
+ private static final String OPENFLOW_PFX = "openflow:";
+
+ private final DataBroker dataBroker;
+ private final PacketProcessingService packetProcessingService;
+ private final NotificationPublishService notificationPublishService;
+ private final NotificationService notificationService;
+ private final OdlInterfaceRpcService odlInterfaceRpcService;
+ private ListenerRegistration<ArpUtilImpl> listenerRegistration;
+ private final ExecutorService threadPool = Executors.newFixedThreadPool(1, "ArpUtil", LOG);
+ private final ConcurrentMap<String, String> macsDB = new ConcurrentHashMap<>();
+ private final ConcurrentMap<String, SettableFuture<RpcResult<GetMacOutput>>> macAddrs = new ConcurrentHashMap<>();
+
+ private final Meter arpRespRecvd;
+ private final Meter arpRespRecvdNotification;
+ private final Meter arpRespRecvdNotificationRejected;
+ private final Meter arpReqRecvd;
+ private final Meter arpReqRecvdNotification;
+ private final Meter arpReqRecvdNotificationRejected;
+
+
+ @Inject
+ public ArpUtilImpl(final DataBroker dataBroker, final PacketProcessingService packetProcessingService,
+ final NotificationPublishService notificationPublishService,
+ final NotificationService notificationService,
+ final OdlInterfaceRpcService odlInterfaceRpcService,
+ final MetricProvider metricProvider) {
+ this.dataBroker = dataBroker;