From patchwork Tue Aug 14 18:56:28 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Yi-Hung Wei X-Patchwork-Id: 957695 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=pass (mailfrom) smtp.mailfrom=openvswitch.org (client-ip=140.211.169.12; helo=mail.linuxfoundation.org; envelope-from=ovs-dev-bounces@openvswitch.org; receiver=) Authentication-Results: ozlabs.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (2048-bit key; unprotected) header.d=gmail.com header.i=@gmail.com header.b="W2Rl4zsH"; dkim-atps=neutral Received: from mail.linuxfoundation.org (mail.linuxfoundation.org [140.211.169.12]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 41qhp773zDz9s9N for ; Wed, 15 Aug 2018 05:03:43 +1000 (AEST) Received: from mail.linux-foundation.org (localhost [127.0.0.1]) by mail.linuxfoundation.org (Postfix) with ESMTP id 4C7AEFC1; Tue, 14 Aug 2018 19:01:01 +0000 (UTC) X-Original-To: dev@openvswitch.org Delivered-To: ovs-dev@mail.linuxfoundation.org Received: from smtp1.linuxfoundation.org (smtp1.linux-foundation.org [172.17.192.35]) by mail.linuxfoundation.org (Postfix) with ESMTPS id C2B88F85 for ; Tue, 14 Aug 2018 19:00:59 +0000 (UTC) X-Greylist: whitelisted by SQLgrey-1.7.6 Received: from mail-pg1-f193.google.com (mail-pg1-f193.google.com [209.85.215.193]) by smtp1.linuxfoundation.org (Postfix) with ESMTPS id 738437C4 for ; Tue, 14 Aug 2018 19:00:58 +0000 (UTC) Received: by mail-pg1-f193.google.com with SMTP id z8-v6so9504135pgu.8 for ; Tue, 14 Aug 2018 12:00:58 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=5SjpOG5oj8Qm102LKxolDNMEi680Z2PRlcjd646zCEw=; b=W2Rl4zsH5y8gHsaBo9P6vBg1cc3bNXnPHMfXNrU3K7toei8VW3nc/3C942x4TdHmP9 Cd9T7iI5xwlbbYZTTasaE7LxfuD9ysz2j/l1yPKGAQq9/vFuYqhinMXlVjlaAvABRk6F LXV6GnMyDwEzpq3yB0iVQdlG2Zbyoi2HxTm8FRVFeh+vEVRhgESH0XvIDhr603152DlA qUwkqnbVaqGsF0yJR/BAWm6w/kj+8Odbuw8ozJUR8KY9ix9HDNEQ7DP9khCSrq7PURw/ efxY/vOWLCd4o1Ny/yPa0panMZzwI5fvH7UWCOJW8t7KvK2C9kHPwoz2ipFipasbzLBp ZKfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=5SjpOG5oj8Qm102LKxolDNMEi680Z2PRlcjd646zCEw=; b=mYHXyIp4YEApweNMScEyCB/nBSjO/68khw8vryv2fRsBWrR/mqw9EVGF8lEMgHLGUZ WiYlVLQX2nKNCe//SMltG2wRGzLeV/hMTswBNVvsFRASrroQaTVDrijS//sTdKn3qBkG fI/aHWkvuGgKQPtXgstLY01wyMECs117ns6AvraeCJXYE7jRe5EwDcy0lQBUH6BmKNbq bEUrklcaiBZAxedMXw1+XHgjg2YokCCiMbe2EkQ/2P2uMkjbo6hnonGGTfVM84Zch7FH Ghckz1clwlfgGSU1txJJH2n7O2aeWPqh9KikKWpJbo1EHEVJv0DNt74B032mlYuI9QrC Sh6Q== X-Gm-Message-State: AOUpUlHoqvgSj/YTAw3LGPUFGw03uHQn+UjxckyWsOX0V+BJGQxNUENr dTg3yP3QA8TJxu+ICDpjU2iZcvru X-Google-Smtp-Source: AA+uWPzGxz7NBFL2XRJmHV2mYMOYS6Z6HW3JCRhQX3GAxqhVnTT6tCU/W4WIUjlPyCmK4U1ZgLXkbQ== X-Received: by 2002:a62:8d84:: with SMTP id p4-v6mr25027480pfk.251.1534273257606; Tue, 14 Aug 2018 12:00:57 -0700 (PDT) Received: from Husky.eng.vmware.com ([66.170.99.1]) by smtp.gmail.com with ESMTPSA id h24-v6sm35826780pfk.113.2018.08.14.12.00.55 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 14 Aug 2018 12:00:55 -0700 (PDT) From: Yi-Hung Wei To: dev@openvswitch.org Date: Tue, 14 Aug 2018 11:56:28 -0700 Message-Id: <1534272992-31756-8-git-send-email-yihung.wei@gmail.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1534272992-31756-1-git-send-email-yihung.wei@gmail.com> References: <1534272992-31756-1-git-send-email-yihung.wei@gmail.com> X-Spam-Status: No, score=-2.0 required=5.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, FREEMAIL_FROM, RCVD_IN_DNSWL_NONE autolearn=ham version=3.3.1 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on smtp1.linux-foundation.org Subject: [ovs-dev] [PATCH v3 07/11] ct-dpif: Helper functions for conntrack zone limit X-BeenThere: ovs-dev@openvswitch.org X-Mailman-Version: 2.1.12 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Sender: ovs-dev-bounces@openvswitch.org Errors-To: ovs-dev-bounces@openvswitch.org This patch implments some helper function for conntrack zone limit. It will be useful for the following patches. Signed-off-by: Yi-Hung Wei --- lib/ct-dpif.c | 32 ++++++++++++++++++++++++++++++++ lib/ct-dpif.h | 4 ++++ 2 files changed, 36 insertions(+) diff --git a/lib/ct-dpif.c b/lib/ct-dpif.c index d1e8a6b8b4a9..a772799fe347 100644 --- a/lib/ct-dpif.c +++ b/lib/ct-dpif.c @@ -597,3 +597,35 @@ error: free(copy); return false; } + +void +ct_dpif_push_zone_limit(struct ovs_list *zone_limits, uint16_t zone, + uint32_t limit, uint32_t count) +{ + struct ct_dpif_zone_limit *zone_limit = xmalloc(sizeof *zone_limit); + zone_limit->zone = zone; + zone_limit->limit = limit; + zone_limit->count = count; + ovs_list_push_back(zone_limits, &zone_limit->node); +} + +/* The caller takes ownership of 'struct ct_dpif_zone_limit *', and is + * responsible to free that struct. */ +struct ct_dpif_zone_limit * +ct_dpif_pop_zone_limit(struct ovs_list *zone_limits) +{ + struct ct_dpif_zone_limit *zone_limit; + LIST_FOR_EACH_POP (zone_limit, node, zone_limits) { + return zone_limit; + } + OVS_NOT_REACHED(); +} + +void +ct_dpif_free_zone_limits(struct ovs_list *zone_limits) +{ + while (!ovs_list_is_empty(zone_limits)) { + struct ct_dpif_zone_limit *p = ct_dpif_pop_zone_limit(zone_limits); + free(p); + } +} diff --git a/lib/ct-dpif.h b/lib/ct-dpif.h index 4e83bc555e03..c80e18b72b56 100644 --- a/lib/ct-dpif.h +++ b/lib/ct-dpif.h @@ -219,5 +219,9 @@ void ct_dpif_format_tuple(struct ds *, const struct ct_dpif_tuple *); uint8_t ct_dpif_coalesce_tcp_state(uint8_t state); void ct_dpif_format_tcp_stat(struct ds *, int, int); bool ct_dpif_parse_tuple(struct ct_dpif_tuple *, const char *s, struct ds *); +void ct_dpif_push_zone_limit(struct ovs_list *, uint16_t zone, uint32_t limit, + uint32_t count); +struct ct_dpif_zone_limit * ct_dpif_pop_zone_limit(struct ovs_list *); +void ct_dpif_free_zone_limits(struct ovs_list *); #endif /* CT_DPIF_H */