]>
git.proxmox.com Git - mirror_ovs.git/blob - ofproto/ofproto.h
2 * Copyright (c) 2009, 2010 Nicira Networks.
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.
39 uint64_t packet_count
; /* Packets from subrules. */
40 uint64_t byte_count
; /* Bytes from subrules. */
41 long long int used
; /* Last-used time (0 if never used). */
44 struct ofproto_sflow_options
{
46 uint32_t sampling_rate
;
47 uint32_t polling_interval
;
54 int ofproto_create(const char *datapath
, const char *datapath_type
,
55 const struct ofhooks
*, void *aux
,
56 struct ofproto
**ofprotop
);
57 void ofproto_destroy(struct ofproto
*);
58 int ofproto_run(struct ofproto
*);
59 int ofproto_run1(struct ofproto
*);
60 int ofproto_run2(struct ofproto
*, bool revalidate_all
);
61 void ofproto_wait(struct ofproto
*);
62 bool ofproto_is_alive(const struct ofproto
*);
65 void ofproto_set_datapath_id(struct ofproto
*, uint64_t datapath_id
);
66 void ofproto_set_probe_interval(struct ofproto
*, int probe_interval
);
67 void ofproto_set_max_backoff(struct ofproto
*, int max_backoff
);
68 void ofproto_set_desc(struct ofproto
*,
69 const char *manufacturer
, const char *hardware
,
70 const char *software
, const char *serial
);
71 int ofproto_set_in_band(struct ofproto
*, bool in_band
);
72 int ofproto_set_discovery(struct ofproto
*, bool discovery
,
73 const char *accept_controller_re
,
74 bool update_resolv_conf
);
75 int ofproto_set_controller(struct ofproto
*, const char *controller
);
76 int ofproto_set_listeners(struct ofproto
*, const struct svec
*listeners
);
77 int ofproto_set_snoops(struct ofproto
*, const struct svec
*snoops
);
78 int ofproto_set_netflow(struct ofproto
*,
79 const struct netflow_options
*nf_options
);
80 void ofproto_set_sflow(struct ofproto
*, const struct ofproto_sflow_options
*);
81 void ofproto_set_failure(struct ofproto
*, bool fail_open
);
82 void ofproto_set_rate_limit(struct ofproto
*, int rate_limit
, int burst_limit
);
83 int ofproto_set_stp(struct ofproto
*, bool enable_stp
);
85 /* Configuration querying. */
86 uint64_t ofproto_get_datapath_id(const struct ofproto
*);
87 int ofproto_get_probe_interval(const struct ofproto
*);
88 int ofproto_get_max_backoff(const struct ofproto
*);
89 bool ofproto_get_in_band(const struct ofproto
*);
90 bool ofproto_get_discovery(const struct ofproto
*);
91 const char *ofproto_get_controller(const struct ofproto
*);
92 void ofproto_get_listeners(const struct ofproto
*, struct svec
*);
93 void ofproto_get_snoops(const struct ofproto
*, struct svec
*);
94 void ofproto_get_all_flows(struct ofproto
*p
, struct ds
*);
96 /* Functions for use by ofproto implementation modules, not by clients. */
97 int ofproto_send_packet(struct ofproto
*, const flow_t
*,
98 const union ofp_action
*, size_t n_actions
,
99 const struct ofpbuf
*);
100 void ofproto_add_flow(struct ofproto
*, const flow_t
*, uint32_t wildcards
,
101 unsigned int priority
,
102 const union ofp_action
*, size_t n_actions
,
104 void ofproto_delete_flow(struct ofproto
*, const flow_t
*, uint32_t wildcards
,
105 unsigned int priority
);
106 void ofproto_flush_flows(struct ofproto
*);
108 /* Hooks for ovs-vswitchd. */
110 void (*port_changed_cb
)(enum ofp_port_reason
, const struct ofp_phy_port
*,
112 bool (*normal_cb
)(const flow_t
*, const struct ofpbuf
*packet
,
113 struct odp_actions
*, tag_type
*,
114 uint16_t *nf_output_iface
, void *aux
);
115 void (*account_flow_cb
)(const flow_t
*, const union odp_action
*,
116 size_t n_actions
, unsigned long long int n_bytes
,
118 void (*account_checkpoint_cb
)(void *aux
);
120 void ofproto_revalidate(struct ofproto
*, tag_type
);
121 struct tag_set
*ofproto_get_revalidate_set(struct ofproto
*);
123 #endif /* ofproto.h */