+
+ // TODO Clean up the exception handling
+ @SuppressWarnings("checkstyle:IllegalCatch")
+ public void createVpnPortFixedIpToPort(String vpnName, String fixedIp,
+ String portName, boolean isLearntIp, String macAddress,
+ WriteTransaction writeConfigTxn) {
+ InstanceIdentifier<VpnPortipToPort> id = buildVpnPortipToPortIdentifier(vpnName, fixedIp);
+ VpnPortipToPortBuilder builder = new VpnPortipToPortBuilder().withKey(new VpnPortipToPortKey(fixedIp, vpnName))
+ .setVpnName(vpnName).setPortFixedip(fixedIp).setPortName(portName)
+ .setLearntIp(isLearntIp).setSubnetIp(false).setMacAddress(macAddress.toLowerCase(Locale.getDefault()));
+ try {
+ if (writeConfigTxn != null) {
+ writeConfigTxn.put(LogicalDatastoreType.CONFIGURATION, id, builder.build());
+ } else {
+ syncWrite(LogicalDatastoreType.CONFIGURATION, id, builder.build());
+ }
+ LOG.trace("Port with Ip: {}, vpn {}, interface {}, learntIp {} added to VpnPortipToPort DS",
+ fixedIp, vpnName, portName, isLearntIp);
+ } catch (Exception e) {
+ LOG.error("Failure while creating VpnPortIpToPort map for vpn {} learnIp{}", vpnName, fixedIp, e);
+ }
+ }
+
+ protected VpnPortipToPort getVpnPortipToPort(String vpnName, String fixedIp) {
+ InstanceIdentifier<VpnPortipToPort> id = buildVpnPortipToPortIdentifier(vpnName, fixedIp);
+ Optional<VpnPortipToPort> vpnPortipToPortData = read(LogicalDatastoreType.CONFIGURATION, id);
+ if (vpnPortipToPortData.isPresent()) {
+ return vpnPortipToPortData.get();
+ }
+ LOG.error("getVpnPortipToPort: Failed as vpnPortipToPortData DS is absent for VPN {} and fixed IP {}",
+ vpnName, fixedIp);
+ return null;
+ }
+
+ public static void enableArpLearning(Boolean isArpLearningEnabled) {
+ arpLearningEnabled = isArpLearningEnabled;
+ }
+
+ public static Boolean isArpLearningEnabled() {
+ return arpLearningEnabled;
+ }