Support packets in flight
[samplevnf.git] / VNFs / DPPD-PROX / flow_iter.h
1 /*
2 // Copyright (c) 2010-2017 Intel Corporation
3 //
4 // Licensed under the Apache License, Version 2.0 (the "License");
5 // you may not use this file except in compliance with the License.
6 // You may obtain a copy of the License at
7 //
8 //     http://www.apache.org/licenses/LICENSE-2.0
9 //
10 // Unless required by applicable law or agreed to in writing, software
11 // distributed under the License is distributed on an "AS IS" BASIS,
12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 // See the License for the specific language governing permissions and
14 // limitations under the License.
15 */
16
17 #ifndef _FLOW_ITER_H_
18 #define _FLOW_ITER_H_
19
20 struct task_args;
21
22 struct flow_iter {
23         /* Returns a new iterator pointing to the beginning of the collection. */
24         void             (*beg)(struct flow_iter *iter, struct task_args *targ);
25         /* Returns non-zero when parameter is pointing past the end of the collection. */
26         int              (*is_end)(struct flow_iter *iter, struct task_args *targ);
27         /* Moves iterator parameter forward by one. */
28         void             (*next)(struct flow_iter *iter, struct task_args *targ);
29         /* Access data. */
30         uint16_t         (*get_svlan)(struct flow_iter *iter, struct task_args *targ);
31         uint16_t         (*get_cvlan)(struct flow_iter *iter, struct task_args *targ);
32         uint32_t         (*get_gre_id)(struct flow_iter *iter, struct task_args *targ);
33         int              idx;
34         uint8_t          data;
35 };
36
37 #endif /* _FLOW_ITER_H_ */