parse_CHECK_PKT_LARGER(char *arg, const struct ofpact_parse_params *pp)
{
    char *value;
    char *delim;
    char *key;
    char *error = set_field_split_str(arg, &key, &value, &delim);
    if (error) {
        return error;
    }

    delim[0] = '\0';
    if (value[strlen(value) - 1] == ')') {
        value[strlen(value) - 1] = '\0';
    }
    struct mf_subfield dst;
    error = mf_parse_subfield(&dst, key);
    if (error) {
        return error;
    }

    if (dst.n_bits != 1) {
        return xstrdup("Only 1-bit destination field is allowed");
    }

    struct ofpact_check_pkt_larger *check_pkt_larger =
        ofpact_put_CHECK_PKT_LARGER(pp->ofpacts);
    error = str_to_u16(value, NULL, &check_pkt_larger->pkt_len);
    if (error) {
        return error;
    }
    check_pkt_larger->dst = dst;
    return NULL;
}
parse_CHECK_PKT_LARGER(char *arg, const struct ofpact_parse_params *pp)
{
    char *value;
    char *delim;
    char *key;
    char *error = set_field_split_str(arg, &key, &value, &delim);
    if (error) {
        return error;
    }

    delim[0] = '\0';
    if (value[strlen(value) - 1] == ')') {
        value[strlen(value) - 1] = '\0';
    }
    struct mf_subfield dst;
    error = mf_parse_subfield(&dst, key);
    if (error) {
        return error;
    }

    if (dst.n_bits != 1) {
        return xstrdup("Only 1-bit destination field is allowed");
    }

    struct ofpact_check_pkt_larger *check_pkt_larger =
        ofpact_put_CHECK_PKT_LARGER(pp->ofpacts);
    error = str_to_u16(value, NULL, &check_pkt_larger->pkt_len);
    if (error) {
        return error;
    }
    check_pkt_larger->dst = dst;
    return NULL;
}