[ovs-dev] [connmgr 11/15] ofproto: Add ofconn_get_flow_format(), ofconn_set_flow_format().

Ethan Jackson ethan at nicira.com
Tue Mar 22 00:56:11 UTC 2011


Looks Good.

On Tue, Mar 15, 2011 at 11:36 AM, Ben Pfaff <blp at nicira.com> wrote:
> This helps to increase the level of abstraction of "struct ofconn",
> in preparation for moving it from ofproto.c into a new file.
> ---
>  ofproto/ofproto.c |   31 ++++++++++++++++++++++++-------
>  1 files changed, 24 insertions(+), 7 deletions(-)
>
> diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
> index bbceae2..17a1f71 100644
> --- a/ofproto/ofproto.c
> +++ b/ofproto/ofproto.c
> @@ -345,6 +345,8 @@ static char *ofconn_make_name(const struct ofproto *, const char *target);
>  static void ofconn_set_rate_limit(struct ofconn *, int rate, int burst);
>
>  static struct ofproto *ofconn_get_ofproto(struct ofconn *);
> +static enum nx_flow_format ofconn_get_flow_format(struct ofconn *);
> +static void ofconn_set_flow_format(struct ofconn *, enum nx_flow_format);
>
>  static void queue_tx(struct ofpbuf *msg, const struct ofconn *ofconn,
>                      struct rconn_packet_counter *counter);
> @@ -1892,6 +1894,18 @@ ofconn_get_ofproto(struct ofconn *ofconn)
>  {
>     return ofconn->ofproto;
>  }
> +
> +static enum nx_flow_format
> +ofconn_get_flow_format(struct ofconn *ofconn)
> +{
> +    return ofconn->flow_format;
> +}
> +
> +static void
> +ofconn_set_flow_format(struct ofconn *ofconn, enum nx_flow_format flow_format)
> +{
> +    ofconn->flow_format = flow_format;
> +}
>
>  static void
>  ofservice_reconfigure(struct ofservice *ofservice,
> @@ -3357,7 +3371,7 @@ handle_table_stats_request(struct ofconn *ofconn,
>     ots = append_ofp_stats_reply(sizeof *ots, ofconn, &msg);
>     memset(ots, 0, sizeof *ots);
>     strcpy(ots->name, "classifier");
> -    ots->wildcards = (ofconn->flow_format == NXFF_OPENFLOW10
> +    ots->wildcards = (ofconn_get_flow_format(ofconn) == NXFF_OPENFLOW10
>                       ? htonl(OFPFW_ALL) : htonl(OVSFW_ALL));
>     ots->max_entries = htonl(1024 * 1024); /* An arbitrary big number. */
>     ots->active_count = htonl(classifier_count(&p->cls));
> @@ -3462,8 +3476,8 @@ put_ofp_flow_stats(struct ofconn *ofconn, struct rule *rule,
>     ofs->length = htons(len);
>     ofs->table_id = 0;
>     ofs->pad = 0;
> -    ofputil_cls_rule_to_match(&rule->cr, ofconn->flow_format, &ofs->match,
> -                              rule->flow_cookie, &cookie);
> +    ofputil_cls_rule_to_match(&rule->cr, ofconn_get_flow_format(ofconn),
> +                              &ofs->match, rule->flow_cookie, &cookie);
>     put_32aligned_be64(&ofs->cookie, cookie);
>     calc_flow_duration(rule->created, &ofs->duration_sec, &ofs->duration_nsec);
>     ofs->priority = htons(rule->cr.priority);
> @@ -4127,7 +4141,7 @@ handle_flow_mod(struct ofconn *ofconn, const struct ofp_header *oh)
>         return error;
>     }
>
> -    error = ofputil_decode_flow_mod(&fm, oh, ofconn->flow_format);
> +    error = ofputil_decode_flow_mod(&fm, oh, ofconn_get_flow_format(ofconn));
>     if (error) {
>         return error;
>     }
> @@ -4174,8 +4188,11 @@ handle_tun_id_from_cookie(struct ofconn *ofconn, const struct ofp_header *oh)
>  {
>     const struct nxt_tun_id_cookie *msg
>         = (const struct nxt_tun_id_cookie *) oh;
> +    enum nx_flow_format flow_format;
> +
> +    flow_format = msg->set ? NXFF_TUN_ID_FROM_COOKIE : NXFF_OPENFLOW10;
> +    ofconn_set_flow_format(ofconn, flow_format);
>
> -    ofconn->flow_format = msg->set ? NXFF_TUN_ID_FROM_COOKIE : NXFF_OPENFLOW10;
>     return 0;
>  }
>
> @@ -4231,7 +4248,7 @@ handle_nxt_set_flow_format(struct ofconn *ofconn, const struct ofp_header *oh)
>     if (format == NXFF_OPENFLOW10
>         || format == NXFF_TUN_ID_FROM_COOKIE
>         || format == NXFF_NXM) {
> -        ofconn->flow_format = format;
> +        ofconn_set_flow_format(ofconn, format);
>         return 0;
>     } else {
>         return ofp_mkerr(OFPET_BAD_REQUEST, OFPBRC_EPERM);
> @@ -4791,7 +4808,7 @@ rule_send_removed(struct ofproto *p, struct rule *rule, uint8_t reason)
>          * being processed also prevents new flows from being added (and
>          * expiring).  (It also prevents processing OpenFlow requests that
>          * would not add new flows, so it is imperfect.) */
> -        msg = ofputil_encode_flow_removed(&fr, ofconn->flow_format);
> +        msg = ofputil_encode_flow_removed(&fr, ofconn_get_flow_format(ofconn));
>         ofconn_send_reply(ofconn, msg);
>     }
>  }
> --
> 1.7.1
>
> _______________________________________________
> dev mailing list
> dev at openvswitch.org
> http://openvswitch.org/mailman/listinfo/dev
>



More information about the dev mailing list