]> git.proxmox.com Git - mirror_ovs.git/blame - lib/vconn.h
queue: Get rid of ovs_queue data structure.
[mirror_ovs.git] / lib / vconn.h
CommitLineData
064af421 1/*
30012c72 2 * Copyright (c) 2008, 2009, 2010 Nicira Networks.
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
20#include <assert.h>
21#include <stdbool.h>
22#include <stddef.h>
23#include <stdint.h>
24
25#include "flow.h"
26
27struct ofpbuf;
28struct ofp_action_header;
29struct ofp_header;
30struct ofp_match;
31struct ofp_stats_reply;
32struct pvconn;
33struct vconn;
34
35void vconn_usage(bool active, bool passive, bool bootstrap);
36
37/* Active vconns: virtual connections to OpenFlow devices. */
30012c72 38int vconn_verify_name(const char *name);
064af421
BP
39int vconn_open(const char *name, int min_version, struct vconn **);
40void vconn_close(struct vconn *);
41const char *vconn_get_name(const struct vconn *);
4408d18a
BP
42ovs_be32 vconn_get_remote_ip(const struct vconn *);
43ovs_be16 vconn_get_remote_port(const struct vconn *);
44ovs_be32 vconn_get_local_ip(const struct vconn *);
45ovs_be16 vconn_get_local_port(const struct vconn *);
064af421
BP
46int vconn_connect(struct vconn *);
47int vconn_recv(struct vconn *, struct ofpbuf **);
48int vconn_send(struct vconn *, struct ofpbuf *);
49int vconn_recv_xid(struct vconn *, uint32_t xid, struct ofpbuf **);
50int vconn_transact(struct vconn *, struct ofpbuf *, struct ofpbuf **);
33af7dca 51int vconn_transact_noreply(struct vconn *, struct ofpbuf *, struct ofpbuf **);
064af421 52
60cb3eb8
BP
53void vconn_run(struct vconn *);
54void vconn_run_wait(struct vconn *);
55
064af421
BP
56int vconn_open_block(const char *name, int min_version, struct vconn **);
57int vconn_send_block(struct vconn *, struct ofpbuf *);
58int vconn_recv_block(struct vconn *, struct ofpbuf **);
59
60enum vconn_wait_type {
61 WAIT_CONNECT,
62 WAIT_RECV,
63 WAIT_SEND
64};
65void vconn_wait(struct vconn *, enum vconn_wait_type);
66void vconn_connect_wait(struct vconn *);
67void vconn_recv_wait(struct vconn *);
68void vconn_send_wait(struct vconn *);
69
70/* Passive vconns: virtual listeners for incoming OpenFlow connections. */
30012c72 71int pvconn_verify_name(const char *name);
064af421
BP
72int pvconn_open(const char *name, struct pvconn **);
73const char *pvconn_get_name(const struct pvconn *);
74void pvconn_close(struct pvconn *);
75int pvconn_accept(struct pvconn *, int min_version, struct vconn **);
76void pvconn_wait(struct pvconn *);
77
064af421 78#endif /* vconn.h */