]>
git.proxmox.com Git - mirror_ovs.git/blob - include/openvswitch/vconn.h
2 * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015 Nicira, Inc.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at:
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #ifndef OPENVSWITCH_VCONN_H
18 #define OPENVSWITCH_VCONN_H 1
21 #include <openvswitch/list.h>
22 #include <openvswitch/types.h>
23 #include <openflow/openflow.h>
35 void vconn_usage(bool active
, bool passive
, bool bootstrap
);
37 /* Active vconns: virtual connections to OpenFlow devices. */
38 int vconn_verify_name(const char *name
);
39 int vconn_open(const char *name
, uint32_t allowed_versions
, uint8_t dscp
,
40 struct vconn
**vconnp
);
41 void vconn_close(struct vconn
*);
42 const char *vconn_get_name(const struct vconn
*);
44 uint32_t vconn_get_allowed_versions(const struct vconn
*vconn
);
45 void vconn_set_allowed_versions(struct vconn
*vconn
,
46 uint32_t allowed_versions
);
47 int vconn_get_version(const struct vconn
*);
48 void vconn_set_recv_any_version(struct vconn
*);
50 int vconn_connect(struct vconn
*);
51 int vconn_recv(struct vconn
*, struct ofpbuf
**);
52 int vconn_send(struct vconn
*, struct ofpbuf
*);
53 int vconn_recv_xid(struct vconn
*, ovs_be32 xid
, struct ofpbuf
**);
54 int vconn_transact(struct vconn
*, struct ofpbuf
*, struct ofpbuf
**);
55 int vconn_transact_noreply(struct vconn
*, struct ofpbuf
*, struct ofpbuf
**);
56 int vconn_transact_multiple_noreply(struct vconn
*, struct ovs_list
*requests
,
57 struct ofpbuf
**replyp
);
58 int vconn_bundle_transact(struct vconn
*, struct ovs_list
*requests
,
59 uint16_t bundle_flags
,
60 void (*error_reporter
)(const struct ofp_header
*));
62 void vconn_run(struct vconn
*);
63 void vconn_run_wait(struct vconn
*);
65 int vconn_get_status(const struct vconn
*);
67 int vconn_open_block(const char *name
, uint32_t allowed_versions
, uint8_t dscp
,
69 int vconn_connect_block(struct vconn
*);
70 int vconn_send_block(struct vconn
*, struct ofpbuf
*);
71 int vconn_recv_block(struct vconn
*, struct ofpbuf
**);
73 enum vconn_wait_type
{
78 void vconn_wait(struct vconn
*, enum vconn_wait_type
);
79 void vconn_connect_wait(struct vconn
*);
80 void vconn_recv_wait(struct vconn
*);
81 void vconn_send_wait(struct vconn
*);
83 /* Passive vconns: virtual listeners for incoming OpenFlow connections. */
84 int pvconn_verify_name(const char *name
);
85 int pvconn_open(const char *name
, uint32_t allowed_versions
, uint8_t dscp
,
86 struct pvconn
**pvconnp
);
87 const char *pvconn_get_name(const struct pvconn
*);
88 void pvconn_close(struct pvconn
*);
89 int pvconn_accept(struct pvconn
*, struct vconn
**);
90 void pvconn_wait(struct pvconn
*);