blob: f9c1972deb960b788759c2fae699dae72c73a43f [file] [log] [blame]
Rich Lanea06d0c32013-03-25 08:52:03 -07001:: # Copyright 2013, Big Switch Networks, Inc.
2:: #
3:: # LoxiGen is licensed under the Eclipse Public License, version 1.0 (EPL), with
4:: # the following special exception:
5:: #
6:: # LOXI Exception
7:: #
8:: # As a special exception to the terms of the EPL, you may distribute libraries
9:: # generated by LoxiGen (LoxiGen Libraries) under the terms of your choice, provided
10:: # that copyright and licensing notices generated by LoxiGen are not altered or removed
11:: # from the LoxiGen Libraries and the notice provided below is (i) included in
12:: # the LoxiGen Libraries, if distributed in source code form and (ii) included in any
13:: # documentation for the LoxiGen Libraries, if distributed in binary form.
14:: #
15:: # Notice: "Copyright 2013, Big Switch Networks, Inc. This library was generated by the LoxiGen Compiler."
16:: #
17:: # You may not use this file except in compliance with the EPL or LOXI Exception. You may obtain
18:: # a copy of the EPL at:
19:: #
20:: # http://www.eclipse.org/legal/epl-v10.html
21:: #
22:: # Unless required by applicable law or agreed to in writing, software
23:: # distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
24:: # WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
25:: # EPL for the specific language governing permissions and limitations
26:: # under the EPL.
27::
28/* Copyright 2013, Big Switch Networks, Inc. */
29
30/****************************************************************
31 * File: of_utils.h
32 *
33 * Some utilities provided based on LOCI code generation
34 *
35 ****************************************************************/
36
37#include <loci/of_utils.h>
38
39
40/**
41 * Check if the given port is used as an output for any entry on the list
42 * @param actions The list of actions being checked
43 * @param outport The port being sought
44 * @returns Boolean, true if entry has an output action to outport
45 *
46 * @fixme VERSION Currently only OF 1.0 supported
47 * @fixme Check for error return in accessor
48 *
49 * If outport is "wildcard", the test should be ignored, so return true
50 */
51
52int
53of_action_list_has_out_port(of_list_action_t *actions, of_port_no_t outport)
54{
55 of_action_t elt;
56 of_action_output_t *output;
57 int loop_rv;
58 of_port_no_t port_no;
59 int rv = 0;
60
61 if (outport == OF_PORT_DEST_WILDCARD) { /* Same as OFPP_ANY */
62 return 1;
63 }
64
65 output = &elt.output;
66 OF_LIST_ACTION_ITER(actions, &elt, loop_rv) {
67 if (output->object_id == OF_ACTION_OUTPUT) {
68 of_action_output_port_get(output, &port_no);
69 if (port_no == outport) {
70 rv = 1;
71 break;
72 }
73 }
74 }
75
76 return rv;
77}
78