forked from roidayan/ovs
-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathofp-bundle.h
92 lines (78 loc) · 3.08 KB
/
ofp-bundle.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*
* Copyright (c) 2008-2017 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 OPENVSWITCH_OFP_BUNDLE_H
#define OPENVSWITCH_OFP_BUNDLE_H 1
#include "openflow/openflow.h"
#include "openvswitch/ofp-flow.h"
#include "openvswitch/ofp-group.h"
#include "openvswitch/ofp-packet.h"
#include "openvswitch/ofp-msgs.h"
#ifdef __cplusplus
extern "C" {
#endif
/* Abstract OFPT_BUNDLE_CONTROL message. */
struct ofputil_bundle_ctrl_msg {
uint32_t bundle_id;
uint16_t type;
uint16_t flags;
};
enum ofperr ofputil_decode_bundle_ctrl(const struct ofp_header *,
struct ofputil_bundle_ctrl_msg *);
struct ofpbuf *ofputil_encode_bundle_ctrl_request(
enum ofp_version, struct ofputil_bundle_ctrl_msg *);
void ofputil_format_bundle_ctrl_request(
struct ds *, const struct ofputil_bundle_ctrl_msg *);
struct ofpbuf *ofputil_encode_bundle_ctrl_reply(
const struct ofp_header *, struct ofputil_bundle_ctrl_msg *);
/* Abstract OFPT_BUNDLE_ADD_MESSAGE message. */
struct ofputil_bundle_add_msg {
uint32_t bundle_id;
uint16_t flags;
const struct ofp_header *msg;
};
struct ofpbuf *ofputil_encode_bundle_add(enum ofp_version,
struct ofputil_bundle_add_msg *);
enum ofperr ofputil_decode_bundle_add(const struct ofp_header *,
struct ofputil_bundle_add_msg *,
enum ofptype *);
void ofputil_format_bundle_add(struct ds *,
const struct ofputil_bundle_add_msg *,
const struct ofputil_port_map *,
const struct ofputil_table_map *,
int verbosity);
/* Bundle message as produced by ofp-parse. */
struct ofputil_bundle_msg {
enum ofptype type;
union {
struct ofputil_flow_mod fm;
struct ofputil_group_mod gm;
struct ofputil_packet_out po;
};
};
void ofputil_encode_bundle_msgs(const struct ofputil_bundle_msg *, size_t n,
struct ovs_list *requests,
enum ofputil_protocol);
void ofputil_free_bundle_msgs(struct ofputil_bundle_msg *, size_t n);
char *parse_ofp_bundle_file(const char *file_name,
const struct ofputil_port_map *,
const struct ofputil_table_map *,
struct ofputil_bundle_msg **, size_t *n_bms,
enum ofputil_protocol *)
OVS_WARN_UNUSED_RESULT;
#ifdef __cplusplus
}
#endif
#endif /* ofp-bundle.h */