From: Ben Pfaff Date: Thu, 29 Sep 2011 22:36:14 +0000 (-0700) Subject: flow: Move flow_extract_stats() to dpif.c, as dpif_flow_stats_extract(). X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=572b70687b27ef6fdd1ed90d1ac932d6de35701f;p=openvswitch flow: Move flow_extract_stats() to dpif.c, as dpif_flow_stats_extract(). The "flow" module is concerned only with OpenFlow flows these days. It shouldn't have anything to do with ODP or dpifs. However, it included dpif.h just to implement flow_extract_stats(). This function is a better fit for dpif.c, so this commit moves it there and removes the dpif.h #include from flow.h and flow.c This commit also removes a few more dpif.h #includes that weren't needed. --- diff --git a/lib/dpif.c b/lib/dpif.c index 2d21a9ff..82b60180 100644 --- a/lib/dpif.c +++ b/lib/dpif.c @@ -661,6 +661,26 @@ dpif_port_poll_wait(const struct dpif *dpif) dpif->dpif_class->port_poll_wait(dpif); } +/* Extracts the flow stats for a packet. The 'flow' and 'packet' + * arguments must have been initialized through a call to flow_extract(). + */ +void +dpif_flow_stats_extract(const struct flow *flow, struct ofpbuf *packet, + struct dpif_flow_stats *stats) +{ + memset(stats, 0, sizeof(*stats)); + + if ((flow->dl_type == htons(ETH_TYPE_IP)) && packet->l4) { + if ((flow->nw_proto == IPPROTO_TCP) && packet->l7) { + struct tcp_header *tcp = packet->l4; + stats->tcp_flags = TCP_FLAGS(tcp->tcp_ctl); + } + } + + stats->n_bytes = packet->size; + stats->n_packets = 1; +} + /* Appends a human-readable representation of 'stats' to 's'. */ void dpif_flow_stats_format(const struct dpif_flow_stats *stats, struct ds *s) diff --git a/lib/dpif.h b/lib/dpif.h index b572d0fb..f8332194 100644 --- a/lib/dpif.h +++ b/lib/dpif.h @@ -32,6 +32,7 @@ extern "C" { struct dpif; struct ds; +struct flow; struct nlattr; struct ofpbuf; struct sset; @@ -115,6 +116,8 @@ struct dpif_flow_stats { uint8_t tcp_flags; }; +void dpif_flow_stats_extract(const struct flow *, struct ofpbuf *packet, + struct dpif_flow_stats *); void dpif_flow_stats_format(const struct dpif_flow_stats *, struct ds *); enum dpif_flow_put_flags { diff --git a/lib/flow.c b/lib/flow.c index b0131f07..2d62a12d 100644 --- a/lib/flow.c +++ b/lib/flow.c @@ -26,7 +26,6 @@ #include #include "byte-order.h" #include "coverage.h" -#include "dpif.h" #include "dynamic-string.h" #include "hash.h" #include "ofpbuf.h" @@ -424,26 +423,6 @@ flow_extract(struct ofpbuf *packet, ovs_be64 tun_id, uint16_t ofp_in_port, return retval; } -/* Extracts the flow stats for a packet. The 'flow' and 'packet' - * arguments must have been initialized through a call to flow_extract(). - */ -void -flow_extract_stats(const struct flow *flow, struct ofpbuf *packet, - struct dpif_flow_stats *stats) -{ - memset(stats, 0, sizeof(*stats)); - - if ((flow->dl_type == htons(ETH_TYPE_IP)) && packet->l4) { - if ((flow->nw_proto == IPPROTO_TCP) && packet->l7) { - struct tcp_header *tcp = packet->l4; - stats->tcp_flags = TCP_FLAGS(tcp->tcp_ctl); - } - } - - stats->n_bytes = packet->size; - stats->n_packets = 1; -} - /* For every bit of a field that is wildcarded in 'wildcards', sets the * corresponding bit in 'flow' to zero. */ void diff --git a/lib/flow.h b/lib/flow.h index a593516d..3f807c50 100644 --- a/lib/flow.h +++ b/lib/flow.h @@ -79,8 +79,6 @@ BUILD_ASSERT_DECL(FLOW_SIG_SIZE == 116 && FLOW_WC_SEQ == 1); int flow_extract(struct ofpbuf *, ovs_be64 tun_id, uint16_t in_port, struct flow *); -void flow_extract_stats(const struct flow *flow, struct ofpbuf *packet, - struct dpif_flow_stats *); void flow_zero_wildcards(struct flow *, const struct flow_wildcards *); char *flow_to_string(const struct flow *); diff --git a/ofproto/in-band.c b/ofproto/in-band.c index 13093e08..cd9c0505 100644 --- a/ofproto/in-band.c +++ b/ofproto/in-band.c @@ -25,7 +25,6 @@ #include #include "classifier.h" #include "dhcp.h" -#include "dpif.h" #include "flow.h" #include "netdev.h" #include "netlink.h" diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index 165732c9..761b5910 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -2258,7 +2258,7 @@ facet_execute(struct ofproto_dpif *ofproto, struct facet *facet, assert(ofpbuf_headroom(packet) >= sizeof(struct ofp_packet_in)); - flow_extract_stats(&facet->flow, packet, &stats); + dpif_flow_stats_extract(&facet->flow, packet, &stats); stats.used = time_msec(); if (execute_odp_actions(ofproto, &facet->flow, facet->actions, facet->actions_len, packet)) {