From patchwork Tue Aug 20 16:45:23 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: michael-dev X-Patchwork-Id: 1150304 X-Patchwork-Delegate: pablo@netfilter.org Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Authentication-Results: ozlabs.org; spf=none (mailfrom) smtp.mailfrom=vger.kernel.org (client-ip=209.132.180.67; helo=vger.kernel.org; envelope-from=netfilter-devel-owner@vger.kernel.org; receiver=) Authentication-Results: ozlabs.org; dmarc=none (p=none dis=none) header.from=fami-braun.de Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 46CcB855glz9s3Z for ; Wed, 21 Aug 2019 02:46:08 +1000 (AEST) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1729918AbfHTQqH (ORCPT ); Tue, 20 Aug 2019 12:46:07 -0400 Received: from mail.fem.tu-ilmenau.de ([141.24.220.54]:59732 "EHLO mail.fem.tu-ilmenau.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726663AbfHTQqH (ORCPT ); Tue, 20 Aug 2019 12:46:07 -0400 Received: from localhost (localhost [127.0.0.1]) by mail.fem.tu-ilmenau.de (Postfix) with ESMTP id BF33064B5; Tue, 20 Aug 2019 18:46:04 +0200 (CEST) X-Virus-Scanned: amavisd-new at fem.tu-ilmenau.de Received: from mail.fem.tu-ilmenau.de ([127.0.0.1]) by localhost (mail.fem.tu-ilmenau.de [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id LWajoeAoeJaB; Tue, 20 Aug 2019 18:46:01 +0200 (CEST) Received: from a234.fem.tu-ilmenau.de (ray-controller.net.fem.tu-ilmenau.de [10.42.51.234]) by mail.fem.tu-ilmenau.de (Postfix) with ESMTP; Tue, 20 Aug 2019 18:46:00 +0200 (CEST) Received: by a234.fem.tu-ilmenau.de (Postfix, from userid 1000) id DA3EE30AD0EB; Tue, 20 Aug 2019 18:46:00 +0200 (CEST) From: Michael Braun To: netfilter-devel@vger.kernel.org Cc: Michael Braun Subject: [PATCH] src: add vlan_id type Date: Tue, 20 Aug 2019 18:45:23 +0200 Message-Id: <20190820164523.18464-1-michael-dev@fami-braun.de> X-Mailer: git-send-email 2.20.1 MIME-Version: 1.0 Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org This enables using vlan id in a set or a concatenation. table bridge filter { set dropvlans { type vlan_id elements = { 123 } } chain FORWARD { type filter hook forward priority filter; policy accept; vlan id @dropvlans drop } } Signed-off-by: Michael Braun --- include/datatype.h | 2 ++ src/datatype.c | 1 + src/proto.c | 11 ++++++++++- 3 files changed, 13 insertions(+), 1 deletion(-) diff --git a/include/datatype.h b/include/datatype.h index c1d08cc2..9678d0da 100644 --- a/include/datatype.h +++ b/include/datatype.h @@ -90,6 +90,7 @@ enum datatypes { TYPE_CT_EVENTBIT, TYPE_IFNAME, TYPE_IGMP_TYPE, + TYPE_VLANID, __TYPE_MAX }; #define TYPE_MAX (__TYPE_MAX - 1) @@ -264,6 +265,7 @@ extern const struct datatype time_type; extern const struct datatype boolean_type; extern const struct datatype priority_type; extern const struct datatype policy_type; +extern const struct datatype vlanid_type; void inet_service_type_print(const struct expr *expr, struct output_ctx *octx); diff --git a/src/datatype.c b/src/datatype.c index c5a01346..2bf0bb18 100644 --- a/src/datatype.c +++ b/src/datatype.c @@ -71,6 +71,7 @@ static const struct datatype *datatypes[TYPE_MAX + 1] = { [TYPE_BOOLEAN] = &boolean_type, [TYPE_IFNAME] = &ifname_type, [TYPE_IGMP_TYPE] = &igmp_type_type, + [TYPE_VLANID] = &vlanid_type, }; const struct datatype *datatype_lookup(enum datatypes type) diff --git a/src/proto.c b/src/proto.c index 40ce590e..efcd6119 100644 --- a/src/proto.c +++ b/src/proto.c @@ -918,6 +918,15 @@ const struct proto_desc proto_arp = { #include +const struct datatype vlanid_type = { + .type = TYPE_VLANID, + .name = "vlan_id", + .desc = "802.1Q VLAN ID", + .byteorder = BYTEORDER_BIG_ENDIAN, + .size = 12, + .basetype = &integer_type, +}; + #define VLANHDR_BITFIELD(__name, __offset, __len) \ HDR_BITFIELD(__name, &integer_type, __offset, __len) #define VLANHDR_TYPE(__name, __type, __member) \ @@ -938,7 +947,7 @@ const struct proto_desc proto_vlan = { .templates = { [VLANHDR_PCP] = VLANHDR_BITFIELD("pcp", 0, 3), [VLANHDR_CFI] = VLANHDR_BITFIELD("cfi", 3, 1), - [VLANHDR_VID] = VLANHDR_BITFIELD("id", 4, 12), + [VLANHDR_VID] = HDR_BITFIELD("id", &vlanid_type, 4, 12), [VLANHDR_TYPE] = VLANHDR_TYPE("type", ðertype_type, vlan_type), }, };