| /* |
| * Copyright 2021-2023 Open Networking Foundation (ONF) and the ONF Contributors |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.opencord.olt; |
| |
| import org.onosproject.net.Device; |
| import org.onosproject.net.DeviceId; |
| import org.onosproject.net.Port; |
| import org.opencord.sadis.UniTagInformation; |
| |
| import java.util.Map; |
| |
| /** |
| * Interface for flow installation/removal methods for different types of traffic. |
| */ |
| public interface OltFlowServiceInterface { |
| /** |
| * Installs or removes default flows for the port to trap to controller. |
| * @param sub the information about the port |
| * @param defaultBpId the default bandwidth profile |
| * @param oltBandwidthProfile the olt bandwidth profile. |
| * @return true if successful |
| */ |
| boolean handleBasicPortFlows( |
| DiscoveredSubscriber sub, String defaultBpId, String oltBandwidthProfile); |
| |
| /** |
| * Installs or removes subscriber specific flows. |
| * @param sub the information about the subscriber |
| * @param defaultBpId the default bandwidth profile |
| * @param multicastServiceName the multicast service name. |
| * @return true if successful |
| */ |
| boolean handleSubscriberFlows(DiscoveredSubscriber sub, String defaultBpId, String multicastServiceName); |
| |
| /** |
| * Installs or removes flows on the NNI port. |
| * @param device the OLT |
| * @param port the NNI port |
| * @param action the operatio, ADD or REMOVE. |
| */ |
| void handleNniFlows(Device device, Port port, FlowOperation action); |
| |
| /** |
| * Checks if the default eapol flow is already installed. |
| * @param port the port |
| * @return true if installed, false otherwise. |
| */ |
| boolean hasDefaultEapol(Port port); |
| |
| /** |
| * Checks if the dhcp flows are installed. |
| * @param port the port |
| * @param uti the UniTagInformation to check for |
| * @return true if installed, false otherwise. |
| */ |
| boolean hasDhcpFlows(Port port, UniTagInformation uti); |
| |
| /** |
| * Checks if the pppoe flows are installed. |
| * @param port the port |
| * @param uti the UniTagInformation to check for |
| * @return true if installed, false otherwise. |
| */ |
| boolean hasPppoeFlows(Port port, UniTagInformation uti); |
| |
| /** |
| * Checks if the subscriber flows are installed. |
| * @param port the port |
| * @param uti the UniTagInformation to check for |
| * @return true if installed, false otherwise. |
| */ |
| boolean hasSubscriberFlows(Port port, UniTagInformation uti); |
| |
| /** |
| * Removes all device flows. |
| * @param deviceId the olt. |
| */ |
| void purgeDeviceFlows(DeviceId deviceId); |
| |
| /** |
| * Return the status of installation on the connect points. |
| * @return the status map |
| */ |
| Map<ServiceKey, OltPortStatus> getConnectPointStatus(); |
| |
| /** |
| * Returns all the programmed subscribers. |
| * @return the subscribers |
| */ |
| Map<ServiceKey, UniTagInformation> getProgrammedSubscribers(); |
| |
| /** |
| * Returns the list of requested subscribers to be installed with status. |
| * @return the list |
| */ |
| Map<ServiceKey, Boolean> getRequestedSubscribers(); |
| |
| /** |
| * Returns if a subscriber on a port is provisioned or not. |
| * @param cp the port |
| * @return true if any service on that port is provisioned, false otherwise |
| */ |
| boolean isSubscriberServiceProvisioned(AccessDevicePort cp); |
| |
| /** |
| * Returns if a subscriber on a port is provisioned or not. |
| * @param sk the SubscriberKey |
| * @return true if provisioned, false otherwise |
| */ |
| boolean isSubscriberServiceProvisioned(ServiceKey sk); |
| |
| /** |
| * Updates the subscriber provisioning status. |
| * @param sk the SubscriberKey |
| * @param status the next status |
| */ |
| void updateProvisionedSubscriberStatus(ServiceKey sk, Boolean status); |
| } |