Oops, the last comment was meant for patch 9 of the series.  I will
repost it there as well.

On Mon, Mar 21, 2011 at 5:40 PM, Ethan Jackson <et...@nicira.com> wrote:
> I think you missed one in handle_role_request line 4325.  Otherwise looks 
> good.
>
> On Tue, Mar 15, 2011 at 11:36 AM, Ben Pfaff <b...@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 |   54 
>> ++++++++++++++++++++++++++++++----------------------
>>  1 files changed, 31 insertions(+), 23 deletions(-)
>>
>> diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
>> index 23069eb..bbceae2 100644
>> --- a/ofproto/ofproto.c
>> +++ b/ofproto/ofproto.c
>> @@ -2520,20 +2520,26 @@ queue_tx(struct ofpbuf *msg, const struct ofconn 
>> *ofconn,
>>  }
>>
>>  static void
>> +ofconn_send_reply(const struct ofconn *ofconn, struct ofpbuf *msg)
>> +{
>> +    queue_tx(msg, ofconn, ofconn->reply_counter);
>> +}
>> +
>> +static void
>>  send_error_oh(const struct ofconn *ofconn, const struct ofp_header *oh,
>>               int error)
>>  {
>>     struct ofpbuf *buf = ofputil_encode_error_msg(error, oh);
>>     if (buf) {
>>         COVERAGE_INC(ofproto_error);
>> -        queue_tx(buf, ofconn, ofconn->reply_counter);
>> +        ofconn_send_reply(ofconn, buf);
>>     }
>>  }
>>
>>  static int
>>  handle_echo_request(struct ofconn *ofconn, const struct ofp_header *oh)
>>  {
>> -    queue_tx(make_echo_reply(oh), ofconn, ofconn->reply_counter);
>> +    ofconn_send_reply(ofconn, make_echo_reply(oh));
>>     return 0;
>>  }
>>
>> @@ -2568,7 +2574,7 @@ handle_features_request(struct ofconn *ofconn, const 
>> struct ofp_header *oh)
>>         hton_ofp_phy_port(ofpbuf_put(buf, &port->opp, sizeof port->opp));
>>     }
>>
>> -    queue_tx(buf, ofconn, ofconn->reply_counter);
>> +    ofconn_send_reply(ofconn, buf);
>>     return 0;
>>  }
>>
>> @@ -2589,7 +2595,7 @@ handle_get_config_request(struct ofconn *ofconn, const 
>> struct ofp_header *oh)
>>     osc = make_openflow_xid(sizeof *osc, OFPT_GET_CONFIG_REPLY, oh->xid, 
>> &buf);
>>     osc->flags = htons(flags);
>>     osc->miss_send_len = htons(ofconn->miss_send_len);
>> -    queue_tx(buf, ofconn, ofconn->reply_counter);
>> +    ofconn_send_reply(ofconn, buf);
>>
>>     return 0;
>>  }
>> @@ -3275,7 +3281,7 @@ append_ofp_stats_reply(size_t nbytes, struct ofconn 
>> *ofconn,
>>         struct ofp_stats_reply *reply = msg->data;
>>         reply->flags = htons(OFPSF_REPLY_MORE);
>>         *msgp = make_ofp_stats_reply(reply->header.xid, reply->type, nbytes);
>> -        queue_tx(msg, ofconn, ofconn->reply_counter);
>> +        ofconn_send_reply(ofconn, msg);
>>     }
>>     return ofpbuf_put_uninit(*msgp, nbytes);
>>  }
>> @@ -3311,7 +3317,7 @@ append_nxstats_reply(size_t nbytes, struct ofconn 
>> *ofconn,
>>         struct nicira_stats_msg *reply = msg->data;
>>         reply->flags = htons(OFPSF_REPLY_MORE);
>>         *msgp = make_nxstats_reply(reply->header.xid, reply->subtype, 
>> nbytes);
>> -        queue_tx(msg, ofconn, ofconn->reply_counter);
>> +        ofconn_send_reply(ofconn, msg);
>>     }
>>     ofpbuf_prealloc_tailroom(*msgp, nbytes);
>>  }
>> @@ -3332,7 +3338,7 @@ handle_desc_stats_request(struct ofconn *ofconn,
>>     ovs_strlcpy(ods->sw_desc, p->sw_desc, sizeof ods->sw_desc);
>>     ovs_strlcpy(ods->serial_num, p->serial_desc, sizeof ods->serial_num);
>>     ovs_strlcpy(ods->dp_desc, p->dp_desc, sizeof ods->dp_desc);
>> -    queue_tx(msg, ofconn, ofconn->reply_counter);
>> +    ofconn_send_reply(ofconn, msg);
>>
>>     return 0;
>>  }
>> @@ -3358,7 +3364,7 @@ handle_table_stats_request(struct ofconn *ofconn,
>>     put_32aligned_be64(&ots->lookup_count, htonll(0));  /* XXX */
>>     put_32aligned_be64(&ots->matched_count, htonll(0)); /* XXX */
>>
>> -    queue_tx(msg, ofconn, ofconn->reply_counter);
>> +    ofconn_send_reply(ofconn, msg);
>>     return 0;
>>  }
>>
>> @@ -3412,7 +3418,7 @@ handle_port_stats_request(struct ofconn *ofconn, const 
>> struct ofp_header *oh)
>>         }
>>     }
>>
>> -    queue_tx(msg, ofconn, ofconn->reply_counter);
>> +    ofconn_send_reply(ofconn, msg);
>>     return 0;
>>  }
>>
>> @@ -3507,7 +3513,7 @@ handle_flow_stats_request(struct ofconn *ofconn, const 
>> struct ofp_header *oh)
>>             put_ofp_flow_stats(ofconn, rule, fsr->out_port, &reply);
>>         }
>>     }
>> -    queue_tx(reply, ofconn, ofconn->reply_counter);
>> +    ofconn_send_reply(ofconn, reply);
>>
>>     return 0;
>>  }
>> @@ -3584,7 +3590,7 @@ handle_nxst_flow(struct ofconn *ofconn, const struct 
>> ofp_header *oh)
>>             put_nx_flow_stats(ofconn, rule, nfsr->out_port, &reply);
>>         }
>>     }
>> -    queue_tx(reply, ofconn, ofconn->reply_counter);
>> +    ofconn_send_reply(ofconn, reply);
>>
>>     return 0;
>>  }
>> @@ -3680,7 +3686,7 @@ handle_aggregate_stats_request(struct ofconn *ofconn,
>>     reply = append_ofp_stats_reply(sizeof *reply, ofconn, &msg);
>>     query_aggregate_stats(ofproto, &target, request->out_port,
>>                           request->table_id, reply);
>> -    queue_tx(msg, ofconn, ofconn->reply_counter);
>> +    ofconn_send_reply(ofconn, msg);
>>     return 0;
>>  }
>>
>> @@ -3713,7 +3719,7 @@ handle_nxst_aggregate(struct ofconn *ofconn, const 
>> struct ofp_header *oh)
>>     reply = ofpbuf_put_uninit(buf, sizeof *reply);
>>     query_aggregate_stats(ofproto, &target, request->out_port,
>>                           request->table_id, reply);
>> -    queue_tx(buf, ofconn, ofconn->reply_counter);
>> +    ofconn_send_reply(ofconn, buf);
>>
>>     return 0;
>>  }
>> @@ -3801,7 +3807,7 @@ handle_queue_stats_request(struct ofconn *ofconn, 
>> const struct ofp_header *oh)
>>         ofpbuf_delete(cbdata.msg);
>>         return ofp_mkerr(OFPET_QUEUE_OP_FAILED, OFPQOFC_BAD_PORT);
>>     }
>> -    queue_tx(cbdata.msg, ofconn, ofconn->reply_counter);
>> +    ofconn_send_reply(ofconn, cbdata.msg);
>>
>>     return 0;
>>  }
>> @@ -4209,7 +4215,7 @@ handle_role_request(struct ofconn *ofconn, const 
>> struct ofp_header *oh)
>>
>>     reply = make_nxmsg_xid(sizeof *reply, NXT_ROLE_REPLY, oh->xid, &buf);
>>     reply->role = htonl(role);
>> -    queue_tx(buf, ofconn, ofconn->reply_counter);
>> +    ofconn_send_reply(ofconn, buf);
>>
>>     return 0;
>>  }
>> @@ -4241,7 +4247,7 @@ handle_barrier_request(struct ofconn *ofconn, const 
>> struct ofp_header *oh)
>>     /* Currently, everything executes synchronously, so we can just
>>      * immediately send the barrier reply. */
>>     ob = make_openflow_xid(sizeof *ob, OFPT_BARRIER_REPLY, oh->xid, &buf);
>> -    queue_tx(buf, ofconn, ofconn->reply_counter);
>> +    ofconn_send_reply(ofconn, buf);
>>     return 0;
>>  }
>>
>> @@ -4773,18 +4779,20 @@ rule_send_removed(struct ofproto *p, struct rule 
>> *rule, uint8_t reason)
>>     fr.byte_count = rule->byte_count;
>>
>>     LIST_FOR_EACH (ofconn, node, &p->all_conns) {
>> +        struct ofpbuf *msg;
>> +
>>         if (!rconn_is_connected(ofconn->rconn)
>>             || !ofconn_receives_async_msgs(ofconn)) {
>>             continue;
>>         }
>>
>> -        /* Account flow expirations under ofconn->reply_counter, the counter
>> -         * for replies to OpenFlow requests.  That works because preventing
>> -         * OpenFlow requests from 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.) */
>> -        queue_tx(ofputil_encode_flow_removed(&fr, ofconn->flow_format),
>> -                 ofconn, ofconn->reply_counter);
>> +        /* This accounts flow expirations as if they were replies to 
>> OpenFlow
>> +         * requests.  That works because preventing OpenFlow requests from
>> +         * 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);
>> +        ofconn_send_reply(ofconn, msg);
>>     }
>>  }
>>
>> --
>> 1.7.1
>>
>> _______________________________________________
>> dev mailing list
>> dev@openvswitch.org
>> http://openvswitch.org/mailman/listinfo/dev
>>
>
_______________________________________________
dev mailing list
dev@openvswitch.org
http://openvswitch.org/mailman/listinfo/dev

Reply via email to