static void emit_resubmit(struct action_context *ctx, uint8_t table_id) { struct ofpact_resubmit *resubmit = ofpact_put_RESUBMIT(ctx->ofpacts); resubmit->in_port = OFPP_IN_PORT; resubmit->table_id = table_id; }
static void parse_resubmit(char *arg, struct ofpbuf *ofpacts) { struct ofpact_resubmit *resubmit; char *in_port_s, *table_s; resubmit = ofpact_put_RESUBMIT(ofpacts); in_port_s = strsep(&arg, ","); if (in_port_s && in_port_s[0]) { if (!ofputil_port_from_string(in_port_s, &resubmit->in_port)) { ovs_fatal(0, "%s: resubmit to unknown port", in_port_s); } } else { resubmit->in_port = OFPP_IN_PORT; } table_s = strsep(&arg, ","); resubmit->table_id = table_s && table_s[0] ? str_to_u32(table_s) : 255; if (resubmit->in_port == OFPP_IN_PORT && resubmit->table_id == 255) { ovs_fatal(0, "at least one \"in_port\" or \"table\" must be specified " " on resubmit"); } }
void act_resubmit(struct ofpbuf* buf, uint32_t inPort, uint8_t tableId) { struct ofpact_resubmit *resubmit = ofpact_put_RESUBMIT(buf); resubmit->in_port = inPort; resubmit->table_id = tableId; }