ofpact_put_OUTPUT(&ofpacts)->port = pr_op->out_ofport;
error = ofproto_dpif_add_internal_flow(bond->ofproto,
&pr_op->match,
- RECIRC_RULE_PRIORITY,
+ RECIRC_RULE_PRIORITY, 0,
&ofpacts, pr_op->pr_rule);
if (error) {
char *err_s = match_to_string(&pr_op->match,
match_init_catchall(&match);
match_set_reg(&match, 0, id);
- error = ofproto_dpif_add_internal_flow(ofproto, &match, 0, ofpacts, &rule);
+ error = ofproto_dpif_add_internal_flow(ofproto, &match, 0, 0, ofpacts,
+ &rule);
*rulep = error ? NULL : rule_dpif_cast(rule);
return error;
match_init_catchall(&match);
match_set_recirc_id(&match, 0);
- error = ofproto_dpif_add_internal_flow(ofproto, &match, 2, &ofpacts,
+ error = ofproto_dpif_add_internal_flow(ofproto, &match, 2, 0, &ofpacts,
&unused_rulep);
if (error) {
return error;
*/
ofpbuf_clear(&ofpacts);
match_init_catchall(&match);
- error = ofproto_dpif_add_internal_flow(ofproto, &match, 1, &ofpacts,
+ error = ofproto_dpif_add_internal_flow(ofproto, &match, 1, 0, &ofpacts,
&unused_rulep);
return error;
int
ofproto_dpif_add_internal_flow(struct ofproto_dpif *ofproto,
const struct match *match, int priority,
+ uint16_t idle_timeout,
const struct ofpbuf *ofpacts,
struct rule **rulep)
{
fm.modify_cookie = false;
fm.table_id = TBL_INTERNAL;
fm.command = OFPFC_ADD;
- fm.idle_timeout = 0;
+ fm.idle_timeout = idle_timeout;
fm.hard_timeout = 0;
fm.buffer_id = 0;
fm.out_port = 0;
void ofproto_dpif_free_recirc_id(struct ofproto_dpif *ofproto, uint32_t recirc_id);
int ofproto_dpif_add_internal_flow(struct ofproto_dpif *,
const struct match *, int priority,
+ uint16_t idle_timeout,
const struct ofpbuf *ofpacts,
struct rule **rulep);
int ofproto_dpif_delete_internal_flow(struct ofproto_dpif *, struct match *,