output_trunc = ofpact_put_OUTPUT_TRUNC(ofpacts);
return parse_truncate_subfield(output_trunc, arg, port_map);
- } else {
- struct mf_subfield src;
- char *error = mf_parse_subfield(&src, arg);
- if (!error) {
- struct ofpact_output_reg *output_reg;
+ }
- output_reg = ofpact_put_OUTPUT_REG(ofpacts);
- output_reg->max_len = UINT16_MAX;
- output_reg->src = src;
- } else {
- free(error);
- struct ofpact_output *output;
+ ofp_port_t port;
+ if (ofputil_port_from_string(arg, port_map, &port)) {
+ struct ofpact_output *output = ofpact_put_OUTPUT(ofpacts);
+ output->port = port;
+ output->max_len = output->port == OFPP_CONTROLLER ? UINT16_MAX : 0;
+ return NULL;
+ }
- output = ofpact_put_OUTPUT(ofpacts);
- if (!ofputil_port_from_string(arg, port_map, &output->port)) {
- return xasprintf("%s: output to unknown port", arg);
- }
- output->max_len = output->port == OFPP_CONTROLLER ? UINT16_MAX : 0;
- }
+ struct mf_subfield src;
+ char *error = mf_parse_subfield(&src, arg);
+ if (!error) {
+ struct ofpact_output_reg *output_reg;
+
+ output_reg = ofpact_put_OUTPUT_REG(ofpacts);
+ output_reg->max_len = UINT16_MAX;
+ output_reg->src = src;
return NULL;
}
+ free(error);
+
+ return xasprintf("%s: output to unknown port", arg);
}
static void
ipv6,actions=ct(commit,nat(src=fe80::20c:29ff:fe88:1-fe80::20c:29ff:fe88:a18b,random))
ipv6,actions=ct(commit,nat(src=[fe80::20c:29ff:fe88:1]-[fe80::20c:29ff:fe88:a18b]:255-4096,random))
tcp,actions=ct(commit,nat(src=10.1.1.240-10.1.1.255),alg=ftp)
+actions=in_port,output:in_port
]])
AT_CHECK([ovs-ofctl parse-flows flows.txt
OFPT_FLOW_MOD: ADD ipv6 actions=ct(commit,nat(src=fe80::20c:29ff:fe88:1-fe80::20c:29ff:fe88:a18b,random))
OFPT_FLOW_MOD: ADD ipv6 actions=ct(commit,nat(src=[fe80::20c:29ff:fe88:1]-[fe80::20c:29ff:fe88:a18b]:255-4096,random))
OFPT_FLOW_MOD: ADD tcp actions=ct(commit,nat(src=10.1.1.240-10.1.1.255),alg=ftp)
+OFPT_FLOW_MOD: ADD actions=IN_PORT,IN_PORT
]])
AT_CLEANUP