blob: dc7b01e2b34428dea9308fefdb01e6b3d0fe4d6e [file] [log] [blame]
tom0eb04ca2014-08-25 14:34:51 -07001package org.onlab.onos.net.flow;
2
tomc1a38d32014-08-25 23:01:32 -07003import org.onlab.onos.net.provider.ProviderService;
tom0eb04ca2014-08-25 14:34:51 -07004
5/**
tom8bb16062014-09-12 14:47:46 -07006 * Service through which flow rule providers can inject information into
tom0eb04ca2014-08-25 14:34:51 -07007 * the core.
8 */
tomd7356722014-08-26 01:07:39 -07009public interface FlowRuleProviderService extends ProviderService<FlowRuleProvider> {
tom0eb04ca2014-08-25 14:34:51 -070010
11 /**
tom8bb16062014-09-12 14:47:46 -070012 * Signals that a flow rule that was previously installed has been removed.
tom0eb04ca2014-08-25 14:34:51 -070013 *
tom8bb16062014-09-12 14:47:46 -070014 * @param flowRule information about the removed flow
tom0eb04ca2014-08-25 14:34:51 -070015 */
tom8bb16062014-09-12 14:47:46 -070016 void flowRemoved(FlowRule flowRule);
tom0eb04ca2014-08-25 14:34:51 -070017
18 /**
tom8bb16062014-09-12 14:47:46 -070019 * Signals that a flow rule is missing for some network traffic.
tom0eb04ca2014-08-25 14:34:51 -070020 *
tom8bb16062014-09-12 14:47:46 -070021 * @param flowRule information about traffic in need of flow rule(s)
tom0eb04ca2014-08-25 14:34:51 -070022 */
tom8bb16062014-09-12 14:47:46 -070023 void flowMissing(FlowRule flowRule);
tom0eb04ca2014-08-25 14:34:51 -070024
alshabib369d2942014-09-12 17:59:35 -070025 /**
26 * Signals that a flow rule was indeed added.
27 *
28 * @param flowRule the added flow rule
29 */
30 void flowAdded(FlowRule flowRule);
31
alshabib5c370ff2014-09-18 10:12:14 -070032 /**
33 * Pushes the collection of flow entries currently applied on the given
34 * device.
35 *
36 * @param deviceId device identifier
37 * @return collection of flow entries
38 */
39 void pushFlowMetrics(Iterable<FlowEntry> flowEntries);
40
tom0eb04ca2014-08-25 14:34:51 -070041}