+ } else if (!strcasecmp(act, "note")) {
+ size_t start_ofs = b->size;
+ struct nx_action_note *nan;
+ int remainder;
+ size_t len;
+
+ nan = put_action(b, sizeof *nan, OFPAT_VENDOR);
+ nan->vendor = htonl(NX_VENDOR_ID);
+ nan->subtype = htons(NXAST_NOTE);
+
+ b->size -= sizeof nan->note;
+ while (*arg != '\0') {
+ uint8_t byte;
+ bool ok;
+
+ if (*arg == '.') {
+ arg++;
+ }
+ if (*arg == '\0') {
+ break;
+ }
+
+ byte = hexits_value(arg, 2, &ok);
+ if (!ok) {
+ ovs_fatal(0, "bad hex digit in `note' argument");
+ }
+ ofpbuf_put(b, &byte, 1);
+
+ arg += 2;
+ }
+
+ len = b->size - start_ofs;
+ remainder = len % OFP_ACTION_ALIGN;
+ if (remainder) {
+ ofpbuf_put_zeros(b, OFP_ACTION_ALIGN - remainder);
+ }
+ nan->len = htons(b->size - start_ofs);
+ } else if (!strcasecmp(act, "move")) {
+ struct nx_action_reg_move *move;
+ move = ofpbuf_put_uninit(b, sizeof *move);
+ nxm_parse_reg_move(move, arg);
+ } else if (!strcasecmp(act, "load")) {
+ struct nx_action_reg_load *load;
+ load = ofpbuf_put_uninit(b, sizeof *load);
+ nxm_parse_reg_load(load, arg);
+ } else if (!strcasecmp(act, "multipath")) {
+ struct nx_action_multipath *nam;
+ nam = ofpbuf_put_uninit(b, sizeof *nam);
+ multipath_parse(nam, arg);