mirror of
https://github.com/openvswitch/ovs
synced 2025-10-27 15:18:06 +00:00
The original concept for "expr" and "actions" was that they should not need to know anything about the mapping between physical and logical fields, that instead everything should be provided via the symbol table. In practice this has proven difficult because a couple of actions need to know about logical fields. For now, it seems reasonable to put the logical field mapping into a header of its own. Later, maybe we'll figure out whether there's value in a less leaky abstraction. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Justin Pettit <jpettit@nicira.com>
64 lines
2.2 KiB
C
64 lines
2.2 KiB
C
/* Copyright (c) 2015 Nicira, Inc.
|
|
*
|
|
* 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.
|
|
*/
|
|
|
|
#ifndef OVN_LFLOW_H
|
|
#define OVN_LFLOW_H 1
|
|
|
|
#include "ovn/lib/logical-fields.h"
|
|
|
|
/* Logical_Flow table translation to OpenFlow
|
|
* ==========================================
|
|
*
|
|
* The Logical_Flow table obtained from the OVN_Southbound database works in
|
|
* terms of logical entities, that is, logical flows among logical datapaths
|
|
* and logical ports. This code translates these logical flows into OpenFlow
|
|
* flows that, again, work in terms of logical entities implemented through
|
|
* OpenFlow extensions (e.g. registers represent the logical input and output
|
|
* ports).
|
|
*
|
|
* Physical-to-logical and logical-to-physical translation are implemented in
|
|
* physical.[ch] as separate OpenFlow tables that run before and after,
|
|
* respectively, the logical pipeline OpenFlow tables.
|
|
*/
|
|
|
|
#include <stdint.h>
|
|
|
|
struct controller_ctx;
|
|
struct hmap;
|
|
struct simap;
|
|
struct uuid;
|
|
|
|
/* OpenFlow table numbers.
|
|
*
|
|
* These are heavily documented in ovn-architecture(7), please update it if
|
|
* you make any changes. */
|
|
#define OFTABLE_PHY_TO_LOG 0
|
|
#define OFTABLE_LOG_INGRESS_PIPELINE 16 /* First of LOG_PIPELINE_LEN tables. */
|
|
#define OFTABLE_REMOTE_OUTPUT 32
|
|
#define OFTABLE_LOCAL_OUTPUT 33
|
|
#define OFTABLE_DROP_LOOPBACK 34
|
|
#define OFTABLE_LOG_EGRESS_PIPELINE 48 /* First of LOG_PIPELINE_LEN tables. */
|
|
#define OFTABLE_LOG_TO_PHY 64
|
|
|
|
/* The number of tables for the ingress and egress pipelines. */
|
|
#define LOG_PIPELINE_LEN 16
|
|
|
|
void lflow_init(void);
|
|
void lflow_run(struct controller_ctx *, struct hmap *flow_table,
|
|
const struct simap *ct_zones);
|
|
void lflow_destroy(void);
|
|
|
|
#endif /* ovn/lflow.h */
|