]> git.proxmox.com Git - mirror_ovs.git/blame - ofproto/ofproto-dpif-mirror.h
ofproto: Do not delete datapath flows on exit by default.
[mirror_ovs.git] / ofproto / ofproto-dpif-mirror.h
CommitLineData
a4547540 1/* Copyright (c) 2013, 2015 Nicira, Inc.
ec7ceaed
EJ
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
a4547540
BP
15#ifndef OFPROTO_DPIF_MIRROR_H
16#define OFPROTO_DPIF_MIRROR_H 1
ec7ceaed
EJ
17
18#include <stdint.h>
19
20#include "util.h"
21
22#define MAX_MIRRORS 32
23typedef uint32_t mirror_mask_t;
24
25struct ofproto_dpif;
26struct ofbundle;
27
4f678069
JR
28/* The following functions are used by handler threads without any locking,
29 * assuming RCU protection. */
30
ec7ceaed
EJ
31struct mbridge *mbridge_ref(const struct mbridge *);
32void mbridge_unref(struct mbridge *);
33bool mbridge_has_mirrors(struct mbridge *);
ec7ceaed
EJ
34
35mirror_mask_t mirror_bundle_out(struct mbridge *, struct ofbundle *);
36mirror_mask_t mirror_bundle_src(struct mbridge *, struct ofbundle *);
37mirror_mask_t mirror_bundle_dst(struct mbridge *, struct ofbundle *);
38
4f678069
JR
39void mirror_update_stats(struct mbridge*, mirror_mask_t, uint64_t packets,
40 uint64_t bytes);
41bool mirror_get(struct mbridge *, int index, const unsigned long **vlans,
42 mirror_mask_t *dup_mirrors, struct ofbundle **out,
43 int *snaplen, int *out_vlan);
44
45/* The remaining functions are assumed to be called by the main thread only. */
46
47struct mbridge *mbridge_create(void);
48bool mbridge_need_revalidate(struct mbridge *);
49
50void mbridge_register_bundle(struct mbridge *, struct ofbundle *);
51void mbridge_unregister_bundle(struct mbridge *, struct ofbundle *);
52
ec7ceaed
EJ
53int mirror_set(struct mbridge *, void *aux, const char *name,
54 struct ofbundle **srcs, size_t n_srcs,
55 struct ofbundle **dsts, size_t n_dsts,
56 unsigned long *src_vlans, struct ofbundle *out_bundle,
1356dbd1 57 uint16_t snaplen, uint16_t out_vlan);
ec7ceaed
EJ
58void mirror_destroy(struct mbridge *, void *aux);
59int mirror_get_stats(struct mbridge *, void *aux, uint64_t *packets,
60 uint64_t *bytes);
ec7ceaed 61
ec7ceaed 62#endif /* ofproto-dpif-mirror.h */