I actually did a similar patch this morning. It also renames variables that were based on the type (e.g., "ofproto_sflow *os" to "dpif_sflow *ds"). I'll send it out in a few minutes.
--Justin On Jun 15, 2011, at 1:11 PM, Ben Pfaff wrote: > The name ofproto-sflow.[ch] implies that this code would work with any > ofproto implementation, but in fact it is specific to the ofproto_dpif > impelementation. Rename it to avoid confusion. > > Suggested-by: Justin Pettit <[email protected]> > --- > ofproto/automake.mk | 4 +- > ofproto/{ofproto-sflow.c => ofproto-dpif-sflow.c} | 128 ++++++++++---------- > ofproto/ofproto-dpif-sflow.h | 46 ++++++++ > ofproto/ofproto-dpif.c | 30 +++--- > ofproto/ofproto-sflow.h | 46 -------- > 5 files changed, 127 insertions(+), 127 deletions(-) > rename ofproto/{ofproto-sflow.c => ofproto-dpif-sflow.c} (82%) > create mode 100644 ofproto/ofproto-dpif-sflow.h > delete mode 100644 ofproto/ofproto-sflow.h > > diff --git a/ofproto/automake.mk b/ofproto/automake.mk > index 0279802..9ce40ab 100644 > --- a/ofproto/automake.mk > +++ b/ofproto/automake.mk > @@ -21,8 +21,8 @@ ofproto_libofproto_a_SOURCES = \ > ofproto/ofproto.c \ > ofproto/ofproto.h \ > ofproto/ofproto-dpif.c \ > - ofproto/ofproto-sflow.c \ > - ofproto/ofproto-sflow.h \ > + ofproto/ofproto-dpif-sflow.c \ > + ofproto/ofproto-dpif-sflow.h \ > ofproto/pktbuf.c \ > ofproto/pktbuf.h \ > ofproto/pinsched.c \ > diff --git a/ofproto/ofproto-sflow.c b/ofproto/ofproto-dpif-sflow.c > similarity index 82% > rename from ofproto/ofproto-sflow.c > rename to ofproto/ofproto-dpif-sflow.c > index a3f4d81..06baf4c 100644 > --- a/ofproto/ofproto-sflow.c > +++ b/ofproto/ofproto-dpif-sflow.c > @@ -16,7 +16,7 @@ > */ > > #include <config.h> > -#include "ofproto-sflow.h" > +#include "ofproto-dpif-sflow.h" > #include <inttypes.h> > #include <stdlib.h> > #include "collectors.h" > @@ -37,14 +37,14 @@ > > VLOG_DEFINE_THIS_MODULE(sflow); > > -struct ofproto_sflow_port { > - struct hmap_node hmap_node; /* In struct ofproto_sflow's "ports" hmap. */ > +struct dpif_sflow_port { > + struct hmap_node hmap_node; /* In struct dpif_sflow's "ports" hmap. */ > struct netdev *netdev; /* Underlying network device, for stats. */ > SFLDataSource_instance dsi; /* sFlow library's notion of port number. */ > uint16_t odp_port; /* ODP port number. */ > }; > > -struct ofproto_sflow { > +struct dpif_sflow { > struct ofproto *ofproto; > struct collectors *collectors; > SFLAgent *sflow_agent; > @@ -52,11 +52,11 @@ struct ofproto_sflow { > struct dpif *dpif; > time_t next_tick; > size_t n_flood, n_all; > - struct hmap ports; /* Contains "struct ofproto_sflow_port"s. */ > + struct hmap ports; /* Contains "struct dpif_sflow_port"s. */ > }; > > -static void ofproto_sflow_del_port__(struct ofproto_sflow *, > - struct ofproto_sflow_port *); > +static void dpif_sflow_del_port__(struct dpif_sflow *, > + struct dpif_sflow_port *); > > #define RECEIVER_INDEX 1 > > @@ -70,7 +70,7 @@ nullable_string_is_equal(const char *a, const char *b) > > static bool > ofproto_sflow_options_equal(const struct ofproto_sflow_options *a, > - const struct ofproto_sflow_options *b) > + const struct ofproto_sflow_options *b) > { > return (sset_equals(&a->targets, &b->targets) > && a->sampling_rate == b->sampling_rate > @@ -133,14 +133,14 @@ sflow_agent_send_packet_cb(void *os_, SFLAgent *agent > OVS_UNUSED, > SFLReceiver *receiver OVS_UNUSED, u_char *pkt, > uint32_t pktLen) > { > - struct ofproto_sflow *os = os_; > + struct dpif_sflow *os = os_; > collectors_send(os->collectors, pkt, pktLen); > } > > -static struct ofproto_sflow_port * > -ofproto_sflow_find_port(const struct ofproto_sflow *os, uint16_t odp_port) > +static struct dpif_sflow_port * > +dpif_sflow_find_port(const struct dpif_sflow *os, uint16_t odp_port) > { > - struct ofproto_sflow_port *osp; > + struct dpif_sflow_port *osp; > > HMAP_FOR_EACH_IN_BUCKET (osp, hmap_node, > hash_int(odp_port, 0), &os->ports) { > @@ -155,15 +155,15 @@ static void > sflow_agent_get_counters(void *os_, SFLPoller *poller, > SFL_COUNTERS_SAMPLE_TYPE *cs) > { > - struct ofproto_sflow *os = os_; > + struct dpif_sflow *os = os_; > SFLCounters_sample_element elem; > - struct ofproto_sflow_port *osp; > + struct dpif_sflow_port *osp; > SFLIf_counters *counters; > struct netdev_stats stats; > enum netdev_flags flags; > uint32_t current; > > - osp = ofproto_sflow_find_port(os, poller->bridgePort); > + osp = dpif_sflow_find_port(os, poller->bridgePort); > if (!osp) { > return; > } > @@ -173,8 +173,8 @@ sflow_agent_get_counters(void *os_, SFLPoller *poller, > counters->ifIndex = SFL_DS_INDEX(poller->dsi); > counters->ifType = 6; > if (!netdev_get_features(osp->netdev, ¤t, NULL, NULL, NULL)) { > - /* The values of ifDirection come from MAU MIB (RFC 2668): 0 = unknown, > - 1 = full-duplex, 2 = half-duplex, 3 = in, 4=out */ > + /* The values of ifDirection come from MAU MIB (RFC 2668): 0 = > unknown, > + 1 = full-duplex, 2 = half-duplex, 3 = in, 4=out */ > counters->ifSpeed = netdev_features_to_bps(current); > counters->ifDirection = (netdev_features_is_full_duplex(current) > ? 1 : 2); > @@ -257,7 +257,7 @@ success: > } > > void > -ofproto_sflow_clear(struct ofproto_sflow *os) > +dpif_sflow_clear(struct dpif_sflow *os) > { > if (os->sflow_agent) { > sfl_agent_release(os->sflow_agent); > @@ -273,15 +273,15 @@ ofproto_sflow_clear(struct ofproto_sflow *os) > } > > bool > -ofproto_sflow_is_enabled(const struct ofproto_sflow *os) > +dpif_sflow_is_enabled(const struct dpif_sflow *os) > { > return os->collectors != NULL; > } > > -struct ofproto_sflow * > -ofproto_sflow_create(struct dpif *dpif) > +struct dpif_sflow * > +dpif_sflow_create(struct dpif *dpif) > { > - struct ofproto_sflow *os; > + struct dpif_sflow *os; > > os = xcalloc(1, sizeof *os); > os->dpif = dpif; > @@ -291,14 +291,14 @@ ofproto_sflow_create(struct dpif *dpif) > } > > void > -ofproto_sflow_destroy(struct ofproto_sflow *os) > +dpif_sflow_destroy(struct dpif_sflow *os) > { > if (os) { > - struct ofproto_sflow_port *osp, *next; > + struct dpif_sflow_port *osp, *next; > > - ofproto_sflow_clear(os); > + dpif_sflow_clear(os); > HMAP_FOR_EACH_SAFE (osp, next, hmap_node, &os->ports) { > - ofproto_sflow_del_port__(os, osp); > + dpif_sflow_del_port__(os, osp); > } > hmap_destroy(&os->ports); > free(os); > @@ -306,8 +306,8 @@ ofproto_sflow_destroy(struct ofproto_sflow *os) > } > > static void > -ofproto_sflow_add_poller(struct ofproto_sflow *os, > - struct ofproto_sflow_port *osp, uint16_t odp_port) > +dpif_sflow_add_poller(struct dpif_sflow *os, > + struct dpif_sflow_port *osp, uint16_t odp_port) > { > SFLPoller *poller = sfl_agent_addPoller(os->sflow_agent, &osp->dsi, os, > sflow_agent_get_counters); > @@ -317,8 +317,8 @@ ofproto_sflow_add_poller(struct ofproto_sflow *os, > } > > static void > -ofproto_sflow_add_sampler(struct ofproto_sflow *os, > - struct ofproto_sflow_port *osp) > +dpif_sflow_add_sampler(struct dpif_sflow *os, > + struct dpif_sflow_port *osp) > { > SFLSampler *sampler = sfl_agent_addSampler(os->sflow_agent, &osp->dsi); > sfl_sampler_set_sFlowFsPacketSamplingRate(sampler, > os->options->sampling_rate); > @@ -327,15 +327,15 @@ ofproto_sflow_add_sampler(struct ofproto_sflow *os, > } > > void > -ofproto_sflow_add_port(struct ofproto_sflow *os, uint16_t odp_port, > - const char *netdev_name) > +dpif_sflow_add_port(struct dpif_sflow *os, uint16_t odp_port, > + const char *netdev_name) > { > - struct ofproto_sflow_port *osp; > + struct dpif_sflow_port *osp; > struct netdev *netdev; > uint32_t ifindex; > int error; > > - ofproto_sflow_del_port(os, odp_port); > + dpif_sflow_del_port(os, odp_port); > > /* Open network device. */ > error = netdev_open_default(netdev_name, &netdev); > @@ -358,14 +358,14 @@ ofproto_sflow_add_port(struct ofproto_sflow *os, > uint16_t odp_port, > > /* Add poller and sampler. */ > if (os->sflow_agent) { > - ofproto_sflow_add_poller(os, osp, odp_port); > - ofproto_sflow_add_sampler(os, osp); > + dpif_sflow_add_poller(os, osp, odp_port); > + dpif_sflow_add_sampler(os, osp); > } > } > > static void > -ofproto_sflow_del_port__(struct ofproto_sflow *os, > - struct ofproto_sflow_port *osp) > +dpif_sflow_del_port__(struct dpif_sflow *os, > + struct dpif_sflow_port *osp) > { > if (os->sflow_agent) { > sfl_agent_removePoller(os->sflow_agent, &osp->dsi); > @@ -377,19 +377,19 @@ ofproto_sflow_del_port__(struct ofproto_sflow *os, > } > > void > -ofproto_sflow_del_port(struct ofproto_sflow *os, uint16_t odp_port) > +dpif_sflow_del_port(struct dpif_sflow *os, uint16_t odp_port) > { > - struct ofproto_sflow_port *osp = ofproto_sflow_find_port(os, odp_port); > + struct dpif_sflow_port *osp = dpif_sflow_find_port(os, odp_port); > if (osp) { > - ofproto_sflow_del_port__(os, osp); > + dpif_sflow_del_port__(os, osp); > } > } > > void > -ofproto_sflow_set_options(struct ofproto_sflow *os, > - const struct ofproto_sflow_options *options) > +dpif_sflow_set_options(struct dpif_sflow *os, > + const struct ofproto_sflow_options *options) > { > - struct ofproto_sflow_port *osp; > + struct dpif_sflow_port *osp; > bool options_changed; > SFLReceiver *receiver; > SFLAddress agentIP; > @@ -398,7 +398,7 @@ ofproto_sflow_set_options(struct ofproto_sflow *os, > if (sset_is_empty(&options->targets) || !options->sampling_rate) { > /* No point in doing any work if there are no targets or nothing to > * sample. */ > - ofproto_sflow_clear(os); > + dpif_sflow_clear(os); > return; > } > > @@ -416,7 +416,7 @@ ofproto_sflow_set_options(struct ofproto_sflow *os, > if (os->collectors == NULL) { > VLOG_WARN_RL(&rl, "no collectors could be initialized, " > "sFlow disabled"); > - ofproto_sflow_clear(os); > + dpif_sflow_clear(os); > return; > } > } > @@ -431,7 +431,7 @@ ofproto_sflow_set_options(struct ofproto_sflow *os, > /* Choose agent IP address. */ > if (!sflow_choose_agent_address(options->agent_device, > options->control_ip, &agentIP)) { > - ofproto_sflow_clear(os); > + dpif_sflow_clear(os); > return; > } > > @@ -463,23 +463,23 @@ ofproto_sflow_set_options(struct ofproto_sflow *os, > > /* Add samplers and pollers for the currently known ports. */ > HMAP_FOR_EACH (osp, hmap_node, &os->ports) { > - ofproto_sflow_add_poller(os, osp, osp->odp_port); > - ofproto_sflow_add_sampler(os, osp); > + dpif_sflow_add_poller(os, osp, osp->odp_port); > + dpif_sflow_add_sampler(os, osp); > } > } > > static int > -ofproto_sflow_odp_port_to_ifindex(const struct ofproto_sflow *os, > - uint16_t odp_port) > +dpif_sflow_odp_port_to_ifindex(const struct dpif_sflow *os, > + uint16_t odp_port) > { > - struct ofproto_sflow_port *osp = ofproto_sflow_find_port(os, odp_port); > + struct dpif_sflow_port *osp = dpif_sflow_find_port(os, odp_port); > return osp ? SFL_DS_INDEX(osp->dsi) : 0; > } > > void > -ofproto_sflow_received(struct ofproto_sflow *os, > - const struct dpif_upcall *upcall, > - const struct flow *flow) > +dpif_sflow_received(struct dpif_sflow *os, > + const struct dpif_upcall *upcall, > + const struct flow *flow) > { > SFL_FLOW_SAMPLE_TYPE fs; > SFLFlow_sample_element hdrElem; > @@ -492,7 +492,7 @@ ofproto_sflow_received(struct ofproto_sflow *os, > > /* Build a flow sample */ > memset(&fs, 0, sizeof fs); > - fs.input = ofproto_sflow_odp_port_to_ifindex(os, flow->in_port); > + fs.input = dpif_sflow_odp_port_to_ifindex(os, flow->in_port); > fs.output = 0; /* Filled in correctly below. */ > fs.sample_pool = upcall->sample_pool; > > @@ -525,8 +525,8 @@ ofproto_sflow_received(struct ofproto_sflow *os, > switchElem.tag = SFLFLOW_EX_SWITCH; > switchElem.flowType.sw.src_vlan = vlan_tci_to_vid(flow->vlan_tci); > switchElem.flowType.sw.src_priority = vlan_tci_to_pcp(flow->vlan_tci); > - /* Initialize the output VLAN and priority to be the same as the input, > - but these fields can be overriden below if affected by an action. */ > + /* Initialize the output VLAN and priority to be the same as the input, > + but these fields can be overriden below if affected by an action. */ > switchElem.flowType.sw.dst_vlan = switchElem.flowType.sw.src_vlan; > switchElem.flowType.sw.dst_priority = switchElem.flowType.sw.src_priority; > > @@ -537,8 +537,8 @@ ofproto_sflow_received(struct ofproto_sflow *os, > > switch (nl_attr_type(a)) { > case ODP_ACTION_ATTR_OUTPUT: > - fs.output = ofproto_sflow_odp_port_to_ifindex(os, > - > nl_attr_get_u32(a)); > + fs.output = dpif_sflow_odp_port_to_ifindex(os, > + nl_attr_get_u32(a)); > n_outputs++; > break; > > @@ -571,9 +571,9 @@ ofproto_sflow_received(struct ofproto_sflow *os, > } > > void > -ofproto_sflow_run(struct ofproto_sflow *os) > +dpif_sflow_run(struct dpif_sflow *os) > { > - if (ofproto_sflow_is_enabled(os)) { > + if (dpif_sflow_is_enabled(os)) { > time_t now = time_now(); > if (now >= os->next_tick) { > sfl_agent_tick(os->sflow_agent, time_wall()); > @@ -583,9 +583,9 @@ ofproto_sflow_run(struct ofproto_sflow *os) > } > > void > -ofproto_sflow_wait(struct ofproto_sflow *os) > +dpif_sflow_wait(struct dpif_sflow *os) > { > - if (ofproto_sflow_is_enabled(os)) { > + if (dpif_sflow_is_enabled(os)) { > poll_timer_wait_until(os->next_tick * 1000LL); > } > } > diff --git a/ofproto/ofproto-dpif-sflow.h b/ofproto/ofproto-dpif-sflow.h > new file mode 100644 > index 0000000..07f4ae7 > --- /dev/null > +++ b/ofproto/ofproto-dpif-sflow.h > @@ -0,0 +1,46 @@ > +/* > + * Copyright (c) 2009, 2010, 2011 InMon Corp. > + * Copyright (c) 2009 Nicira Networks. > + * > + * Licensed under the Apache License, Version 2.0 (the "License"); > + * you may not use this file except in compliance with the License. > + * You may obtain a copy of the License at: > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > + * > + * Unless required by applicable law or agreed to in writing, software > + * distributed under the License is distributed on an "AS IS" BASIS, > + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > + * See the License for the specific language governing permissions and > + * limitations under the License. > + */ > + > +#ifndef OFPROTO_DPIF_SFLOW_H > +#define OFPROTO_DPIF_SFLOW_H 1 > + > +#include <stdint.h> > +#include "svec.h" > + > +struct dpif; > +struct dpif_upcall; > +struct flow; > +struct ofproto_sflow_options; > + > +struct dpif_sflow *dpif_sflow_create(struct dpif *); > +void dpif_sflow_destroy(struct dpif_sflow *); > +void dpif_sflow_set_options(struct dpif_sflow *, > + const struct ofproto_sflow_options *); > +void dpif_sflow_clear(struct dpif_sflow *); > +bool dpif_sflow_is_enabled(const struct dpif_sflow *); > + > +void dpif_sflow_add_port(struct dpif_sflow *, uint16_t odp_port, > + const char *netdev_name); > +void dpif_sflow_del_port(struct dpif_sflow *, uint16_t odp_port); > + > +void dpif_sflow_run(struct dpif_sflow *); > +void dpif_sflow_wait(struct dpif_sflow *); > + > +void dpif_sflow_received(struct dpif_sflow *, > + const struct dpif_upcall *, const struct flow *); > + > +#endif /* ofproto/ofproto-dpif-sflow.h */ > diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c > index 5604d5e..9e3b274 100644 > --- a/ofproto/ofproto-dpif.c > +++ b/ofproto/ofproto-dpif.c > @@ -40,7 +40,7 @@ > #include "ofp-util.h" > #include "ofpbuf.h" > #include "ofp-print.h" > -#include "ofproto-sflow.h" > +#include "ofproto-dpif-sflow.h" > #include "poll-loop.h" > #include "timer.h" > #include "unaligned.h" > @@ -315,7 +315,7 @@ struct ofproto_dpif { > > /* Bridging. */ > struct netflow *netflow; > - struct ofproto_sflow *sflow; > + struct dpif_sflow *sflow; > struct hmap bundles; /* Contains "struct ofbundle"s. */ > struct mac_learning *ml; > struct ofmirror *mirrors[MAX_MIRRORS]; > @@ -501,7 +501,7 @@ destruct(struct ofproto *ofproto_) > } > > netflow_destroy(ofproto->netflow); > - ofproto_sflow_destroy(ofproto->sflow); > + dpif_sflow_destroy(ofproto->sflow); > hmap_destroy(&ofproto->bundles); > mac_learning_destroy(ofproto->ml); > > @@ -548,7 +548,7 @@ run(struct ofproto *ofproto_) > netflow_run(ofproto->netflow); > } > if (ofproto->sflow) { > - ofproto_sflow_run(ofproto->sflow); > + dpif_sflow_run(ofproto->sflow); > } > > HMAP_FOR_EACH (ofport, up.hmap_node, &ofproto->up.ports) { > @@ -594,7 +594,7 @@ wait(struct ofproto *ofproto_) > dpif_wait(ofproto->dpif); > dpif_recv_wait(ofproto->dpif); > if (ofproto->sflow) { > - ofproto_sflow_wait(ofproto->sflow); > + dpif_sflow_wait(ofproto->sflow); > } > if (!tag_set_is_empty(&ofproto->revalidate_set)) { > poll_immediate_wake(); > @@ -710,8 +710,8 @@ port_construct(struct ofport *port_) > port->tag = tag_create_random(); > > if (ofproto->sflow) { > - ofproto_sflow_add_port(ofproto->sflow, port->odp_port, > - netdev_get_name(port->up.netdev)); > + dpif_sflow_add_port(ofproto->sflow, port->odp_port, > + netdev_get_name(port->up.netdev)); > } > > return 0; > @@ -726,7 +726,7 @@ port_destruct(struct ofport *port_) > bundle_remove(port_); > set_cfm(port_, NULL); > if (ofproto->sflow) { > - ofproto_sflow_del_port(ofproto->sflow, port->odp_port); > + dpif_sflow_del_port(ofproto->sflow, port->odp_port); > } > } > > @@ -758,20 +758,20 @@ set_sflow(struct ofproto *ofproto_, > const struct ofproto_sflow_options *sflow_options) > { > struct ofproto_dpif *ofproto = ofproto_dpif_cast(ofproto_); > - struct ofproto_sflow *os = ofproto->sflow; > + struct dpif_sflow *os = ofproto->sflow; > if (sflow_options) { > if (!os) { > struct ofport_dpif *ofport; > > - os = ofproto->sflow = ofproto_sflow_create(ofproto->dpif); > + os = ofproto->sflow = dpif_sflow_create(ofproto->dpif); > HMAP_FOR_EACH (ofport, up.hmap_node, &ofproto->up.ports) { > - ofproto_sflow_add_port(os, ofport->odp_port, > - netdev_get_name(ofport->up.netdev)); > + dpif_sflow_add_port(os, ofport->odp_port, > + netdev_get_name(ofport->up.netdev)); > } > } > - ofproto_sflow_set_options(os, sflow_options); > + dpif_sflow_set_options(os, sflow_options); > } else { > - ofproto_sflow_destroy(os); > + dpif_sflow_destroy(os); > ofproto->sflow = NULL; > } > return 0; > @@ -1693,7 +1693,7 @@ handle_upcall(struct ofproto_dpif *ofproto, struct > dpif_upcall *upcall) > case DPIF_UC_SAMPLE: > if (ofproto->sflow) { > odp_flow_key_to_flow(upcall->key, upcall->key_len, &flow); > - ofproto_sflow_received(ofproto->sflow, upcall, &flow); > + dpif_sflow_received(ofproto->sflow, upcall, &flow); > } > ofpbuf_delete(upcall->packet); > break; > diff --git a/ofproto/ofproto-sflow.h b/ofproto/ofproto-sflow.h > deleted file mode 100644 > index 6f9a93d..0000000 > --- a/ofproto/ofproto-sflow.h > +++ /dev/null > @@ -1,46 +0,0 @@ > -/* > - * Copyright (c) 2009, 2010 InMon Corp. > - * Copyright (c) 2009 Nicira Networks. > - * > - * Licensed under the Apache License, Version 2.0 (the "License"); > - * you may not use this file except in compliance with the License. > - * You may obtain a copy of the License at: > - * > - * http://www.apache.org/licenses/LICENSE-2.0 > - * > - * Unless required by applicable law or agreed to in writing, software > - * distributed under the License is distributed on an "AS IS" BASIS, > - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. > - * See the License for the specific language governing permissions and > - * limitations under the License. > - */ > - > -#ifndef OFPROTO_SFLOW_H > -#define OFPROTO_SFLOW_H 1 > - > -#include <stdint.h> > -#include "svec.h" > - > -struct dpif; > -struct dpif_upcall; > -struct flow; > -struct ofproto_sflow_options; > - > -struct ofproto_sflow *ofproto_sflow_create(struct dpif *); > -void ofproto_sflow_destroy(struct ofproto_sflow *); > -void ofproto_sflow_set_options(struct ofproto_sflow *, > - const struct ofproto_sflow_options *); > -void ofproto_sflow_clear(struct ofproto_sflow *); > -bool ofproto_sflow_is_enabled(const struct ofproto_sflow *); > - > -void ofproto_sflow_add_port(struct ofproto_sflow *, uint16_t odp_port, > - const char *netdev_name); > -void ofproto_sflow_del_port(struct ofproto_sflow *, uint16_t odp_port); > - > -void ofproto_sflow_run(struct ofproto_sflow *); > -void ofproto_sflow_wait(struct ofproto_sflow *); > - > -void ofproto_sflow_received(struct ofproto_sflow *, > - const struct dpif_upcall *, const struct flow *); > - > -#endif /* ofproto/ofproto-sflow.h */ > -- > 1.7.4.4 > > _______________________________________________ > dev mailing list > [email protected] > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
