]>
Commit | Line | Data |
---|---|---|
bce7cf45 | 1 | /* Copyright (c) 2015, 2016 Nicira, Inc. |
678729a2 BP |
2 | * |
3 | * Licensed under the Apache License, Version 2.0 (the "License"); | |
4 | * you may not use this file except in compliance with the License. | |
5 | * You may obtain a copy of the License at: | |
6 | * | |
7 | * http://www.apache.org/licenses/LICENSE-2.0 | |
8 | * | |
9 | * Unless required by applicable law or agreed to in writing, software | |
10 | * distributed under the License is distributed on an "AS IS" BASIS, | |
11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
12 | * See the License for the specific language governing permissions and | |
13 | * limitations under the License. | |
14 | */ | |
15 | ||
48605550 BP |
16 | #ifndef OVN_LFLOW_H |
17 | #define OVN_LFLOW_H 1 | |
678729a2 | 18 | |
667e2b0b BP |
19 | #include "ovn/lib/logical-fields.h" |
20 | ||
48605550 BP |
21 | /* Logical_Flow table translation to OpenFlow |
22 | * ========================================== | |
e71ac5cd | 23 | * |
48605550 BP |
24 | * The Logical_Flow table obtained from the OVN_Southbound database works in |
25 | * terms of logical entities, that is, logical flows among logical datapaths | |
26 | * and logical ports. This code translates these logical flows into OpenFlow | |
27 | * flows that, again, work in terms of logical entities implemented through | |
28 | * OpenFlow extensions (e.g. registers represent the logical input and output | |
29 | * ports). | |
e71ac5cd BP |
30 | * |
31 | * Physical-to-logical and logical-to-physical translation are implemented in | |
32 | * physical.[ch] as separate OpenFlow tables that run before and after, | |
33 | * respectively, the logical pipeline OpenFlow tables. | |
34 | */ | |
35 | ||
36 | #include <stdint.h> | |
37 | ||
678729a2 | 38 | struct controller_ctx; |
761fd08f | 39 | struct hmap; |
bce7cf45 BP |
40 | struct lport_index; |
41 | struct mcgroup_index; | |
78aab811 | 42 | struct simap; |
e71ac5cd | 43 | struct uuid; |
678729a2 | 44 | |
5868eb24 BP |
45 | /* OpenFlow table numbers. |
46 | * | |
47 | * These are heavily documented in ovn-architecture(7), please update it if | |
48 | * you make any changes. */ | |
49 | #define OFTABLE_PHY_TO_LOG 0 | |
50 | #define OFTABLE_LOG_INGRESS_PIPELINE 16 /* First of LOG_PIPELINE_LEN tables. */ | |
51 | #define OFTABLE_REMOTE_OUTPUT 32 | |
52 | #define OFTABLE_LOCAL_OUTPUT 33 | |
53 | #define OFTABLE_DROP_LOOPBACK 34 | |
54 | #define OFTABLE_LOG_EGRESS_PIPELINE 48 /* First of LOG_PIPELINE_LEN tables. */ | |
55 | #define OFTABLE_LOG_TO_PHY 64 | |
0bac7164 | 56 | #define OFTABLE_MAC_BINDING 65 |
5868eb24 BP |
57 | |
58 | /* The number of tables for the ingress and egress pipelines. */ | |
59 | #define LOG_PIPELINE_LEN 16 | |
60 | ||
48605550 | 61 | void lflow_init(void); |
bce7cf45 BP |
62 | void lflow_run(struct controller_ctx *, const struct lport_index *, |
63 | const struct mcgroup_index *, | |
64 | const struct hmap *local_datapaths, | |
b1e04512 | 65 | const struct simap *ct_zones, |
bce7cf45 | 66 | struct hmap *flow_table); |
48605550 | 67 | void lflow_destroy(void); |
678729a2 | 68 | |
48605550 | 69 | #endif /* ovn/lflow.h */ |