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);
{
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;
+}
\f
static void
ofservice_reconfigure(struct ofservice *ofservice,
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));
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);
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;
}
{
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;
}
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);
* 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);
}
}