X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fbundle.c;h=92ac1e1d4e77ad141faabf629b011e5f861f8e97;hb=e3432ee978b4fd740aa4db785742a28a573e2cde;hp=c6b1f75eb8070dbecd136e61838cf900d3b748f6;hpb=f25d0cf3c366d92042269a4f787f19c741c2530c;p=openvswitch diff --git a/lib/bundle.c b/lib/bundle.c index c6b1f75e..92ac1e1d 100644 --- a/lib/bundle.c +++ b/lib/bundle.c @@ -217,7 +217,7 @@ bundle_check(const struct ofpact_bundle *bundle, int max_ports, void bundle_to_nxast(const struct ofpact_bundle *bundle, struct ofpbuf *openflow) { - int slaves_len = ROUND_UP(bundle->n_slaves, OFP_ACTION_ALIGN); + int slaves_len = ROUND_UP(2 * bundle->n_slaves, OFP_ACTION_ALIGN); struct nx_action_bundle *nab; ovs_be16 *slaves; size_t i; @@ -267,12 +267,14 @@ bundle_parse__(const char *s, char **save_ptr, uint16_t slave_port; char *slave; - slave = strtok_r(NULL, ", [", save_ptr); + slave = strtok_r(NULL, ", []", save_ptr); if (!slave || bundle->n_slaves >= BUNDLE_MAX_SLAVES) { break; } - slave_port = atoi(slave); + if (!ofputil_port_from_string(slave, &slave_port)) { + ovs_fatal(0, "%s: bad port number", slave); + } ofpbuf_put(ofpacts, &slave_port, sizeof slave_port); bundle = ofpacts->l2; @@ -387,7 +389,7 @@ bundle_format(const struct ofpact_bundle *bundle, struct ds *s) ds_put_cstr(s, ","); } - ds_put_format(s, "%"PRIu16, bundle->slaves[i]); + ofputil_format_port(bundle->slaves[i], s); } ds_put_cstr(s, ")");