]>
Commit | Line | Data |
---|---|---|
064af421 BP |
1 | /* |
2 | * Copyright (c) 2008, 2009 Nicira Networks. | |
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 | ||
18 | #ifndef DPIF_H | |
19 | #define DPIF_H 1 | |
20 | ||
21 | /* Operations for the datapath running in the local kernel. The interface can | |
22 | * generalize to multiple types of local datapaths, but the implementation only | |
23 | * supports the openflow kernel module. */ | |
24 | ||
25 | #include "openvswitch/datapath-protocol.h" | |
26 | #include <stdbool.h> | |
27 | #include <stddef.h> | |
28 | #include <stdint.h> | |
29 | ||
30 | struct ofpbuf; | |
31 | ||
32 | /* A datapath interface. Opaque. */ | |
33 | struct dpif { | |
34 | unsigned int minor; /* For use in error messages. */ | |
35 | int fd; | |
36 | }; | |
37 | ||
38 | int dpif_open(const char *name, struct dpif *); | |
39 | int dpif_create(const char *name, struct dpif *); | |
40 | void dpif_close(struct dpif *); | |
41 | ||
42 | static inline unsigned int dpif_id(const struct dpif *dpif); | |
43 | int dpif_get_name(struct dpif *, char *name, size_t name_size); | |
44 | ||
45 | int dpif_delete(struct dpif *); | |
46 | ||
47 | int dpif_get_dp_stats(const struct dpif *, struct odp_stats *); | |
48 | int dpif_get_drop_frags(const struct dpif *, bool *drop_frags); | |
49 | int dpif_set_drop_frags(struct dpif *, bool drop_frags); | |
50 | ||
51 | int dpif_get_listen_mask(const struct dpif *, int *listen_mask); | |
52 | int dpif_set_listen_mask(struct dpif *, int listen_mask); | |
53 | int dpif_purge(struct dpif *); | |
54 | ||
55 | int dpif_port_add(struct dpif *, const char *devname, uint16_t port_no, | |
56 | uint16_t flags); | |
57 | int dpif_port_del(struct dpif *, uint16_t port_no); | |
58 | int dpif_port_query_by_number(const struct dpif *, uint16_t port_no, | |
59 | struct odp_port *); | |
60 | int dpif_port_query_by_name(const struct dpif *, const char *devname, | |
61 | struct odp_port *); | |
62 | int dpif_port_list(const struct dpif *, struct odp_port **, size_t *n_ports); | |
63 | ||
64 | int dpif_port_group_set(struct dpif *, uint16_t group, | |
65 | const uint16_t ports[], size_t n_ports); | |
66 | int dpif_port_group_get(const struct dpif *, uint16_t group, | |
67 | uint16_t ports[], size_t n_ports, size_t *n_out); | |
68 | ||
69 | int dpif_flow_flush(struct dpif *); | |
70 | int dpif_flow_put(struct dpif *, struct odp_flow_put *); | |
71 | int dpif_flow_del(struct dpif *, struct odp_flow *); | |
72 | int dpif_flow_get(const struct dpif *, struct odp_flow *); | |
73 | int dpif_flow_get_multiple(const struct dpif *, struct odp_flow[], size_t n); | |
74 | int dpif_flow_list(const struct dpif *, struct odp_flow[], size_t n, | |
75 | size_t *n_out); | |
76 | int dpif_flow_list_all(const struct dpif *, | |
77 | struct odp_flow **flowsp, size_t *np); | |
78 | ||
79 | int dpif_execute(struct dpif *, uint16_t in_port, | |
80 | const union odp_action[], size_t n_actions, | |
81 | const struct ofpbuf *); | |
82 | ||
83 | int dpif_recv(struct dpif *, struct ofpbuf **); | |
84 | void dpif_recv_wait(struct dpif *); | |
85 | ||
86 | static inline unsigned int | |
87 | dpif_id(const struct dpif *dpif) | |
88 | { | |
89 | return dpif->minor; | |
90 | } | |
91 | \f | |
92 | struct dpifmon; | |
93 | ||
94 | int dpifmon_create(const char *datapath_name, struct dpifmon **); | |
95 | void dpifmon_destroy(struct dpifmon *); | |
96 | ||
97 | int dpifmon_poll(struct dpifmon *, char **devnamep); | |
98 | ||
99 | void dpifmon_run(struct dpifmon *); | |
100 | void dpifmon_wait(struct dpifmon *); | |
101 | ||
102 | #endif /* dpif.h */ |