Branch data Line data Source code
1 : : /* Copyright (c) 2013, 2015 Nicira, Inc.
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 : :
16 : : #ifndef TUNNEL_H
17 : : #define TUNNEL_H 1
18 : :
19 : : #include <stdbool.h>
20 : : #include <stdint.h>
21 : : #include "flow.h"
22 : :
23 : : /* Tunnel port emulation layer.
24 : : *
25 : : * These functions emulate tunnel virtual ports based on the outer
26 : : * header information from the kernel. */
27 : :
28 : : struct ovs_action_push_tnl;
29 : : struct ofport_dpif;
30 : : struct netdev;
31 : : struct netdev_tnl_build_header_params;
32 : :
33 : : void ofproto_tunnel_init(void);
34 : : bool tnl_port_reconfigure(const struct ofport_dpif *, const struct netdev *,
35 : : odp_port_t, bool native_tnl, const char name[]);
36 : :
37 : : int tnl_port_add(const struct ofport_dpif *, const struct netdev *,
38 : : odp_port_t odp_port, bool native_tnl, const char name[]);
39 : : void tnl_port_del(const struct ofport_dpif *);
40 : :
41 : : const struct ofport_dpif *tnl_port_receive(const struct flow *);
42 : : void tnl_wc_init(struct flow *, struct flow_wildcards *);
43 : : bool tnl_process_ecn(struct flow *);
44 : : odp_port_t tnl_port_send(const struct ofport_dpif *, struct flow *,
45 : : struct flow_wildcards *wc);
46 : :
47 : : /* Returns true if 'flow' should be submitted to tnl_port_receive(). */
48 : : static inline bool
49 : 247860 : tnl_port_should_receive(const struct flow *flow)
50 : : {
51 : 247860 : return flow_tnl_dst_is_set(&flow->tunnel);
52 : : }
53 : :
54 : : int
55 : : tnl_port_build_header(const struct ofport_dpif *ofport,
56 : : struct ovs_action_push_tnl *data,
57 : : const struct netdev_tnl_build_header_params *params);
58 : :
59 : : #endif /* tunnel.h */
|