]>
Commit | Line | Data |
---|---|---|
064af421 | 1 | /* |
accaecc4 | 2 | * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013, 2014 Nicira, Inc. |
064af421 | 3 | * |
a14bc59f BP |
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: | |
064af421 | 7 | * |
a14bc59f BP |
8 | * http://www.apache.org/licenses/LICENSE-2.0 |
9 | * | |
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. | |
064af421 BP |
15 | */ |
16 | ||
17 | #ifndef VCONN_H | |
18 | #define VCONN_H 1 | |
19 | ||
064af421 | 20 | #include <stdbool.h> |
3021ea60 | 21 | #include "openvswitch/types.h" |
733c8ed3 | 22 | #include "openflow/openflow.h" |
064af421 | 23 | |
43d1478b CB |
24 | #ifdef __cplusplus |
25 | extern "C" { | |
26 | #endif | |
27 | ||
ca6ba700 | 28 | struct ovs_list; |
064af421 | 29 | struct ofpbuf; |
064af421 BP |
30 | struct pvconn; |
31 | struct vconn; | |
32 | ||
33 | void vconn_usage(bool active, bool passive, bool bootstrap); | |
34 | ||
35 | /* Active vconns: virtual connections to OpenFlow devices. */ | |
30012c72 | 36 | int vconn_verify_name(const char *name); |
82c8c53c BP |
37 | int vconn_open(const char *name, uint32_t allowed_versions, uint8_t dscp, |
38 | struct vconn **vconnp); | |
064af421 BP |
39 | void vconn_close(struct vconn *); |
40 | const char *vconn_get_name(const struct vconn *); | |
4766ce7a | 41 | |
7a25bd99 | 42 | uint32_t vconn_get_allowed_versions(const struct vconn *vconn); |
e182670b SH |
43 | void vconn_set_allowed_versions(struct vconn *vconn, |
44 | uint32_t allowed_versions); | |
4766ce7a BP |
45 | int vconn_get_version(const struct vconn *); |
46 | void vconn_set_recv_any_version(struct vconn *); | |
47 | ||
064af421 BP |
48 | int vconn_connect(struct vconn *); |
49 | int vconn_recv(struct vconn *, struct ofpbuf **); | |
50 | int vconn_send(struct vconn *, struct ofpbuf *); | |
dbba996b | 51 | int vconn_recv_xid(struct vconn *, ovs_be32 xid, struct ofpbuf **); |
064af421 | 52 | int vconn_transact(struct vconn *, struct ofpbuf *, struct ofpbuf **); |
33af7dca | 53 | int vconn_transact_noreply(struct vconn *, struct ofpbuf *, struct ofpbuf **); |
ca6ba700 | 54 | int vconn_transact_multiple_noreply(struct vconn *, struct ovs_list *requests, |
7f009380 | 55 | struct ofpbuf **replyp); |
064af421 | 56 | |
60cb3eb8 BP |
57 | void vconn_run(struct vconn *); |
58 | void vconn_run_wait(struct vconn *); | |
59 | ||
accaecc4 BP |
60 | int vconn_get_status(const struct vconn *); |
61 | ||
82c8c53c | 62 | int vconn_open_block(const char *name, uint32_t allowed_versions, uint8_t dscp, |
2e3fa633 | 63 | struct vconn **); |
6d1fb217 | 64 | int vconn_connect_block(struct vconn *); |
064af421 BP |
65 | int vconn_send_block(struct vconn *, struct ofpbuf *); |
66 | int vconn_recv_block(struct vconn *, struct ofpbuf **); | |
67 | ||
68 | enum vconn_wait_type { | |
69 | WAIT_CONNECT, | |
70 | WAIT_RECV, | |
71 | WAIT_SEND | |
72 | }; | |
73 | void vconn_wait(struct vconn *, enum vconn_wait_type); | |
74 | void vconn_connect_wait(struct vconn *); | |
75 | void vconn_recv_wait(struct vconn *); | |
76 | void vconn_send_wait(struct vconn *); | |
77 | ||
78 | /* Passive vconns: virtual listeners for incoming OpenFlow connections. */ | |
30012c72 | 79 | int pvconn_verify_name(const char *name); |
82c8c53c BP |
80 | int pvconn_open(const char *name, uint32_t allowed_versions, uint8_t dscp, |
81 | struct pvconn **pvconnp); | |
064af421 BP |
82 | const char *pvconn_get_name(const struct pvconn *); |
83 | void pvconn_close(struct pvconn *); | |
7a25bd99 | 84 | int pvconn_accept(struct pvconn *, struct vconn **); |
064af421 BP |
85 | void pvconn_wait(struct pvconn *); |
86 | ||
43d1478b CB |
87 | #ifdef __cplusplus |
88 | } | |
89 | #endif | |
90 | ||
064af421 | 91 | #endif /* vconn.h */ |