zone_limit_update(struct conntrack *ct, int32_t zone, uint32_t limit)
{
    int err = 0;
    ovs_mutex_lock(&ct->ct_lock);
    struct zone_limit *zl = zone_limit_lookup(ct, zone);
    if (zl) {
        zl->czl.limit = limit;
        VLOG_INFO("Changed zone limit of %u for zone %d", limit, zone);
    } else {
        err = zone_limit_create(ct, zone, limit);
        if (!err) {
            VLOG_INFO("Created zone limit of %u for zone %d", limit, zone);
        } else {
            VLOG_WARN("Request to create zone limit for invalid zone %d",
                      zone);
        }
    }
    ovs_mutex_unlock(&ct->ct_lock);
    return err;
}
zone_limit_update(struct conntrack *ct, int32_t zone, uint32_t limit)
{
    int err = 0;
    ovs_mutex_lock(&ct->ct_lock);
    struct zone_limit *zl = zone_limit_lookup(ct, zone);
    if (zl) {
        zl->czl.limit = limit;
        VLOG_INFO("Changed zone limit of %u for zone %d", limit, zone);
    } else {
        err = zone_limit_create(ct, zone, limit);
        if (!err) {
            VLOG_INFO("Created zone limit of %u for zone %d", limit, zone);
        } else {
            VLOG_WARN("Request to create zone limit for invalid zone %d",
                      zone);
        }
    }
    ovs_mutex_unlock(&ct->ct_lock);
    return err;
}