/* * Copyright (c) 2016 Hewlett Packard Enterprise Development LP. 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.sfc.util.macchaining; import java.util.List; import org.opendaylight.sfc.provider.api.SfcProviderServiceForwarderAPI; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.common.rev151017.SffName; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarder.base.SffDataPlaneLocator; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.ServiceFunctionForwarder; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sff.rev140701.service.function.forwarders.service.function.forwarder.ConnectedSffDictionary; import org.opendaylight.yang.gen.v1.urn.cisco.params.xml.ns.yang.sfc.sl.rev140701.MacAddressLocator; public class SfcModelUtil { public static SffDataPlaneLocator searchSrcDplInConnectedSffs(SffName sffSrcName, SffName dstSffName) { if (!sffSrcName.equals(dstSffName)) { ConnectedSffDictionary connectedSffs = SfcProviderServiceForwarderAPI.getSffSffConnectedDictionary(sffSrcName, dstSffName); if (connectedSffs == null) { return null; } ServiceFunctionForwarder srcSff = SfcProviderServiceForwarderAPI.readServiceFunctionForwarder(sffSrcName); List<SffDataPlaneLocator> dplsFromSrcSff = srcSff.getSffDataPlaneLocator(); for (SffDataPlaneLocator srcSffDpl : dplsFromSrcSff) { if (srcSffDpl.getDataPlaneLocator().getTransport().equals( connectedSffs.getSffSffDataPlaneLocator().getTransport())) { if (srcSffDpl.getDataPlaneLocator().getLocatorType() instanceof MacAddressLocator) { MacAddressLocator macSrcSff = (MacAddressLocator) srcSffDpl.getDataPlaneLocator().getLocatorType(); MacAddressLocator macToNextSff = (MacAddressLocator) connectedSffs.getSffSffDataPlaneLocator().getLocatorType(); if (macSrcSff.getMac().equals(macToNextSff.getMac())) { return srcSffDpl; } } } } } return null; } }