Bharat saraswal
Committed by Ray Milkey

[ONOS-3116] Flow classifier for service function chain.

Change-Id: Iad6f548c190a96a0b2a79a2bd9b90d0a96f3c179
/*
* Copyright 2015 Open Networking Laboratory
*
* 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.onosproject.vtnrsc;
import org.onlab.packet.IpPrefix;
/**
* Abstraction of an entity which provides flow classifier for service function chain.
* FlowClassifier classify the traffic based on the criteria defined in the request.
* The classification can be based on port range or source and destination IP address or
* other flow classifier elements.
*/
public interface FlowClassifier {
/**
* Returns flow classifier ID.
*
* @return flow classifier id
*/
FlowClassifierId flowClassifierId();
/**
* Returns Tenant ID.
*
* @return tenant Id
*/
TenantId tenantId();
/**
* Returns flow classifier name.
*
* @return flow classifier name
*/
String name();
/**
* Returns flow classifier description.
*
* @return flow classifier description
*/
String description();
/**
* Returns EtherType.
*
* @return EtherType
*/
String etherType();
/**
* Returns IP Protocol.
*
* @return IP protocol
*/
String protocol();
/**
* Returns minimum source port range.
*
* @return minimum source port range
*/
int minSrcPortRange();
/**
* Returns maximum source port range.
*
* @return maximum source port range
*/
int maxSrcPortRange();
/**
* Returns minimum destination port range.
*
* @return minimum destination port range
*/
int minDstPortRange();
/**
* Returns maximum destination port range.
*
* @return maximum destination port range.
*/
int maxDstPortRange();
/**
* Returns Source IP prefix.
*
* @return Source IP prefix
*/
IpPrefix srcIpPrefix();
/**
* Returns Destination IP prefix.
*
* @return Destination IP prefix
*/
IpPrefix dstIpPrefix();
/**
* Returns Source virtual port.
*
* @return Source virtual port
*/
VirtualPortId srcPort();
/**
* Returns Destination virtual port.
*
* @return Destination virtual port
*/
VirtualPortId dstPort();
/**
* Returns whether this Flow classifier is an exact match to the
* Flow classifier given in the argument.
*
* @param flowClassifier other flowClassifier to match against
* @return true if the flowClassifiers are an exact match, otherwise false
*/
boolean exactMatch(FlowClassifier flowClassifier);
/**
* Builder for flow Classifier.
*/
interface Builder {
/**
* Returns Flow Classifier.
*
* @return flow classifier.
*/
FlowClassifier build();
/**
* Sets Flow Classifier ID.
*
* @param flowClassifierId flow classifier id.
* @return Builder object by setting flow classifier Id.
*/
Builder setFlowClassifierId(FlowClassifierId flowClassifierId);
/**
* Sets Tenant ID.
*
* @param tenantId tenant id.
* @return Builder object by setting Tenant ID.
*/
Builder setTenantId(TenantId tenantId);
/**
* Sets Flow classifier name.
*
* @param name flow classifier name
* @return builder object by setting flow classifier name
*/
Builder setName(String name);
/**
* Sets flow classifier description.
*
* @param description flow classifier description
* @return flow classifier description
*/
Builder setDescription(String description);
/**
* Sets EtherType.
*
* @param etherType EtherType
* @return EtherType
*/
Builder setEtherType(String etherType);
/**
* Sets IP protocol.
*
* @param protocol IP protocol
* @return builder object by setting IP protocol
*/
Builder setProtocol(String protocol);
/**
* Set minimum source port range.
*
* @param minRange minimum source port range
* @return builder object by setting minimum source port range
*/
Builder setMinSrcPortRange(int minRange);
/**
* Sets maximum source port range.
*
* @param maxRange maximum source port range
* @return builder object by setting maximum source port range
*/
Builder setMaxSrcPortRange(int maxRange);
/**
* Sets minimum destination port range.
*
* @param minRange minimum destination port range
* @return builder object by setting minimum destination port range
*/
Builder setMinDstPortRange(int minRange);
/**
* Sets maximum destination port range.
*
* @param maxRange maximum destination port range.
* @return builder object by setting maximum destination port range.
*/
Builder setMaxDstPortRange(int maxRange);
/**
* Sets Source IP prefix.
*
* @param srcIpPrefix Source IP prefix
* @return builder object by setting Source IP prefix
*/
Builder setSrcIpPrefix(IpPrefix srcIpPrefix);
/**
* Sets Destination IP prefix.
*
* @param dstIpPrefix Destination IP prefix
* @return builder object by setting Destination IP prefix
*/
Builder setDstIpPrefix(IpPrefix dstIpPrefix);
/**
* Sets Source virtual port.
*
* @param srcPort Source virtual port
* @return builder object by setting Source virtual port
*/
Builder setSrcPort(VirtualPortId srcPort);
/**
* Sets Destination virtual port.
*
* @param dstPort Destination virtual port
* @return builder object by setting Destination virtual port
*/
Builder setDstPort(VirtualPortId dstPort);
}
}