mirror of
https://github.com/openvswitch/ovs
synced 2025-10-21 14:49:41 +00:00
ovs-ofctl: Use 65535 instead of 0 for OFPP_CONTROLLER max_len.
OpenFlow 0.9 will change the interpretation of a max_len of 0 in an OFPP_CONTROLLER output action from "send entire packet" to "send 0 bytes of packet", but ovs-ofctl documents that specifying no argument or "ALL" as the argument to a CONTROLLER output action sends the whole packet, so we need to make that happen.
This commit is contained in:
@@ -320,8 +320,8 @@ enum ofp_action_type {
|
|||||||
|
|
||||||
/* Action structure for OFPAT_OUTPUT, which sends packets out 'port'.
|
/* Action structure for OFPAT_OUTPUT, which sends packets out 'port'.
|
||||||
* When the 'port' is the OFPP_CONTROLLER, 'max_len' indicates the max
|
* When the 'port' is the OFPP_CONTROLLER, 'max_len' indicates the max
|
||||||
* number of bytes to send. A 'max_len' of zero means the entire packet
|
* number of bytes to send. A 'max_len' of zero means no bytes of the
|
||||||
* should be sent. */
|
* packet should be sent. */
|
||||||
struct ofp_action_output {
|
struct ofp_action_output {
|
||||||
uint16_t type; /* OFPAT_OUTPUT. */
|
uint16_t type; /* OFPAT_OUTPUT. */
|
||||||
uint16_t len; /* Length is 8. */
|
uint16_t len; /* Length is 8. */
|
||||||
|
@@ -617,6 +617,8 @@ str_to_action(char *str, struct ofpbuf *b)
|
|||||||
* packet to the controller. */
|
* packet to the controller. */
|
||||||
if (arg && (strspn(act, "0123456789") == strlen(act))) {
|
if (arg && (strspn(act, "0123456789") == strlen(act))) {
|
||||||
oao->max_len = htons(str_to_u32(arg));
|
oao->max_len = htons(str_to_u32(arg));
|
||||||
|
} else {
|
||||||
|
oao->max_len = htons(UINT16_MAX);
|
||||||
}
|
}
|
||||||
} else if (parse_port_name(act, &port)) {
|
} else if (parse_port_name(act, &port)) {
|
||||||
put_output_action(b, port);
|
put_output_action(b, port);
|
||||||
|
Reference in New Issue
Block a user