From patchwork Mon Mar 11 15:14:12 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Fernando F. Mancera" X-Patchwork-Id: 1054513 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=pass (p=none dis=none) header.from=riseup.net Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=riseup.net header.i=@riseup.net header.b="pyjEXVTx"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 44J1qB2FhFz9s47 for ; Tue, 12 Mar 2019 02:14:30 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727334AbfCKPO3 (ORCPT ); Mon, 11 Mar 2019 11:14:29 -0400 Received: from mx1.riseup.net ([198.252.153.129]:50328 "EHLO mx1.riseup.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727320AbfCKPO3 (ORCPT ); Mon, 11 Mar 2019 11:14:29 -0400 Received: from bell.riseup.net (bell-pn.riseup.net [10.0.1.178]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client CN "*.riseup.net", Issuer "COMODO RSA Domain Validation Secure Server CA" (verified OK)) by mx1.riseup.net (Postfix) with ESMTPS id 488A91A0C73 for ; Mon, 11 Mar 2019 08:14:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak; t=1552317268; bh=LrGuC6yfy2f9wgpMoCiQRpJ0+WobyhxM+458XBaKVxM=; h=From:To:Cc:Subject:Date:From; b=pyjEXVTxgWxoqWfMnhhBw1TkhqzLIv2qKNIS26gutxtwpIPo4wZyTGX7zdFXWyrV3 g+bNuChSuBK9ZEcP0bJnNCb0+cOYAW2tswcZTjuiQWL7H/3dQaAmLIhT9fzuS8K9mH WyeojSyiYuCml9G9ra+rUS6hMOhMcqN+A42Pjidc= X-Riseup-User-ID: 81073CCC4AE3C92BB2A92B043A4DF4E97A9F95A41009823F28A2D846BCC8D359 Received: from [127.0.0.1] (localhost [127.0.0.1]) by bell.riseup.net (Postfix) with ESMTPSA id 66470221C5D; Mon, 11 Mar 2019 08:14:27 -0700 (PDT) From: Fernando Fernandez Mancera To: netfilter-devel@vger.kernel.org Cc: Fernando Fernandez Mancera Subject: [PATCH nft v2 1/6] osf: add version fingerprint support Date: Mon, 11 Mar 2019 16:14:12 +0100 Message-Id: <20190311151417.17772-1-ffmancera@riseup.net> MIME-Version: 1.0 Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org Add support for version fingerprint in "osf" expression. Example: table ip foo { chain bar { type filter hook input priority filter; policy accept; osf ttl skip name "Linux" osf ttl skip name version "Linux:4.20" } } Signed-off-by: Fernando Fernandez Mancera --- v1: initial patch v2: flags type is now u32 --- include/expression.h | 1 + include/linux/netfilter/nf_tables.h | 6 ++++++ include/osf.h | 3 ++- src/netlink_delinearize.c | 4 +++- src/netlink_linearize.c | 1 + src/osf.c | 13 ++++++++++--- src/parser_bison.y | 8 ++++++-- 7 files changed, 29 insertions(+), 7 deletions(-) diff --git a/include/expression.h b/include/expression.h index 6d72f64..6416ac0 100644 --- a/include/expression.h +++ b/include/expression.h @@ -350,6 +350,7 @@ struct expr { struct { /* EXPR_OSF */ uint8_t ttl; + uint32_t flags; } osf; }; }; diff --git a/include/linux/netfilter/nf_tables.h b/include/linux/netfilter/nf_tables.h index 37036be..09a7b9e 100644 --- a/include/linux/netfilter/nf_tables.h +++ b/include/linux/netfilter/nf_tables.h @@ -944,15 +944,21 @@ enum nft_socket_keys { * * @NFTA_OSF_DREG: destination register (NLA_U32: nft_registers) * @NFTA_OSF_TTL: Value of the TTL osf option (NLA_U8) + * @NFTA_OSF_FLAGS: flags (NLA_U32) */ enum nft_osf_attributes { NFTA_OSF_UNSPEC, NFTA_OSF_DREG, NFTA_OSF_TTL, + NFTA_OSF_FLAGS, __NFTA_OSF_MAX }; #define NFT_OSF_MAX (__NFTA_OSF_MAX - 1) +enum nft_osf_flags { + NFT_OSF_F_VERSION = 1 << 0, /* check fingerprint version */ +}; + /** * enum nft_ct_keys - nf_tables ct expression keys * diff --git a/include/osf.h b/include/osf.h index 23ea34d..8f6f584 100644 --- a/include/osf.h +++ b/include/osf.h @@ -1,7 +1,8 @@ #ifndef NFTABLES_OSF_H #define NFTABLES_OSF_H -struct expr *osf_expr_alloc(const struct location *loc, const uint8_t ttl); +struct expr *osf_expr_alloc(const struct location *loc, const uint8_t ttl, + const uint32_t flags); extern int nfnl_osf_load_fingerprints(struct netlink_ctx *ctx, int del); diff --git a/src/netlink_delinearize.c b/src/netlink_delinearize.c index d0eaf5b..9a2d63d 100644 --- a/src/netlink_delinearize.c +++ b/src/netlink_delinearize.c @@ -655,10 +655,12 @@ static void netlink_parse_osf(struct netlink_parse_ctx *ctx, { enum nft_registers dreg; struct expr *expr; + uint32_t flags; uint8_t ttl; ttl = nftnl_expr_get_u8(nle, NFTNL_EXPR_OSF_TTL); - expr = osf_expr_alloc(loc, ttl); + flags = nftnl_expr_get_u32(nle, NFTNL_EXPR_OSF_FLAGS); + expr = osf_expr_alloc(loc, ttl, flags); dreg = netlink_parse_register(nle, NFTNL_EXPR_OSF_DREG); netlink_set_register(ctx, dreg, expr); diff --git a/src/netlink_linearize.c b/src/netlink_linearize.c index 61149bf..8df82d5 100644 --- a/src/netlink_linearize.c +++ b/src/netlink_linearize.c @@ -228,6 +228,7 @@ static void netlink_gen_osf(struct netlink_linearize_ctx *ctx, nle = alloc_nft_expr("osf"); netlink_put_register(nle, NFTNL_EXPR_OSF_DREG, dreg); nftnl_expr_set_u8(nle, NFTNL_EXPR_OSF_TTL, expr->osf.ttl); + nftnl_expr_set_u32(nle, NFTNL_EXPR_OSF_FLAGS, expr->osf.flags); nftnl_rule_add_expr(ctx->nlr, nle); } diff --git a/src/osf.c b/src/osf.c index 9252934..b57fcfe 100644 --- a/src/osf.c +++ b/src/osf.c @@ -19,17 +19,22 @@ static void osf_expr_print(const struct expr *expr, struct output_ctx *octx) { const char *ttl_str = osf_ttl_int_to_str(expr->osf.ttl); - nft_print(octx, "osf %sname", ttl_str); + if (expr->osf.flags & NFT_OSF_F_VERSION) + nft_print(octx, "osf %sname version", ttl_str); + else + nft_print(octx, "osf %sname", ttl_str); } static void osf_expr_clone(struct expr *new, const struct expr *expr) { new->osf.ttl = expr->osf.ttl; + new->osf.flags = expr->osf.flags; } static bool osf_expr_cmp(const struct expr *e1, const struct expr *e2) { - return e1->osf.ttl == e2->osf.ttl; + return (e1->osf.ttl == e2->osf.ttl) && + (e1->osf.flags == e2->osf.flags); } const struct expr_ops osf_expr_ops = { @@ -41,7 +46,8 @@ const struct expr_ops osf_expr_ops = { .json = osf_expr_json, }; -struct expr *osf_expr_alloc(const struct location *loc, const uint8_t ttl) +struct expr *osf_expr_alloc(const struct location *loc, const uint8_t ttl, + const uint32_t flags) { unsigned int len = NFT_OSF_MAXGENRELEN * BITS_PER_BYTE; const struct datatype *type = &string_type; @@ -50,6 +56,7 @@ struct expr *osf_expr_alloc(const struct location *loc, const uint8_t ttl) expr = expr_alloc(loc, EXPR_OSF, type, BYTEORDER_HOST_ENDIAN, len); expr->osf.ttl = ttl; + expr->osf.flags = flags; return expr; } diff --git a/src/parser_bison.y b/src/parser_bison.y index b20be3a..161f1a5 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -3190,9 +3190,13 @@ fib_tuple : fib_flag DOT fib_tuple | fib_flag ; -osf_expr : OSF osf_ttl NAME +osf_expr : OSF osf_ttl NAME HDRVERSION { - $$ = osf_expr_alloc(&@$, $2); + $$ = osf_expr_alloc(&@$, $2, NFT_OSF_F_VERSION); + } + | OSF osf_ttl NAME + { + $$ = osf_expr_alloc(&@$, $2, 0); } ; From patchwork Mon Mar 11 15:14:13 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Fernando F. Mancera" X-Patchwork-Id: 1054514 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=pass (p=none dis=none) header.from=riseup.net Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=riseup.net header.i=@riseup.net header.b="EsHnDsaQ"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 44J1qF2xC1z9s4Y for ; Tue, 12 Mar 2019 02:14:33 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727216AbfCKPOb (ORCPT ); Mon, 11 Mar 2019 11:14:31 -0400 Received: from mx1.riseup.net ([198.252.153.129]:50342 "EHLO mx1.riseup.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727342AbfCKPOb (ORCPT ); Mon, 11 Mar 2019 11:14:31 -0400 Received: from bell.riseup.net (bell-pn.riseup.net [10.0.1.178]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client CN "*.riseup.net", Issuer "COMODO RSA Domain Validation Secure Server CA" (verified OK)) by mx1.riseup.net (Postfix) with ESMTPS id 5BC201A64CB for ; Mon, 11 Mar 2019 08:14:30 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak; t=1552317270; bh=5TxmpCSx/k4UMz1CbtVmzxUZkqAybr0R+a/40tu1V2M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=EsHnDsaQPlvU2E02a8LYdaWD7WBy9B1DDWQmghB5c2PO9ZwP61U6NmDKrgf/+f30t xbUWT5rA6eCcOter5Ni4AKWBUnf45nv7TY/ZQiCh15BHUTX3n3EHtk9X0LS5LTJO3Z LDSFUrbfrxqnmo4d4IW364RHSl/S639kEvof7/cE= X-Riseup-User-ID: D006D4537AF30C89D48D1308CE5A41045B21DD8578F002501EF7CE2E4790796E Received: from [127.0.0.1] (localhost [127.0.0.1]) by bell.riseup.net (Postfix) with ESMTPSA id 71260221C5D; Mon, 11 Mar 2019 08:14:29 -0700 (PDT) From: Fernando Fernandez Mancera To: netfilter-devel@vger.kernel.org Cc: Fernando Fernandez Mancera Subject: [PATCH nft v2 2/6] json: osf: add version json support Date: Mon, 11 Mar 2019 16:14:13 +0100 Message-Id: <20190311151417.17772-2-ffmancera@riseup.net> In-Reply-To: <20190311151417.17772-1-ffmancera@riseup.net> References: <20190311151417.17772-1-ffmancera@riseup.net> MIME-Version: 1.0 Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org Signed-off-by: Fernando Fernandez Mancera --- v1: initial patch v2: flags type is now u32 --- doc/libnftables-json.adoc | 7 +++++- src/json.c | 13 +++++++++++ src/parser_json.c | 48 ++++++++++++++++++++++++++++++++++++++- 3 files changed, 66 insertions(+), 2 deletions(-) diff --git a/doc/libnftables-json.adoc b/doc/libnftables-json.adoc index dbe5ac3..6981c69 100644 --- a/doc/libnftables-json.adoc +++ b/doc/libnftables-json.adoc @@ -1302,11 +1302,16 @@ Construct a reference to packet's socket. ____ *{ "osf": { "key":* 'OSF_KEY'*, - "ttl":* 'OSF_TTL' + "ttl":* 'OSF_TTL'*, + "flags":* 'OSF_FLAGS' *}}* 'OSF_KEY' := *"name"* 'OSF_TTL' := *"loose"* | *"skip"* + +'OSF_FLAGS' := 'OSF_FLAG' | *[* 'OSF_FLAG_LIST' *]* +'OSF_FLAG_LIST' := 'OSF_FLAG' [*,* 'OSF_FLAG_LIST' ] +'OSF_FLAG' := *"version"* ____ Perform OS fingerprinting. This expression is typically used in the LHS of a *match* diff --git a/src/json.c b/src/json.c index 276a3c0..a46188d 100644 --- a/src/json.c +++ b/src/json.c @@ -865,6 +865,7 @@ json_t *socket_expr_json(const struct expr *expr, struct output_ctx *octx) json_t *osf_expr_json(const struct expr *expr, struct output_ctx *octx) { json_t *root = json_pack("{s:s}", "key", "name"); + const char *osf_flags[] = { "version" } switch (expr->osf.ttl) { case 1: @@ -875,6 +876,18 @@ json_t *osf_expr_json(const struct expr *expr, struct output_ctx *octx) break; } + if (expr->osf.flags) { + json_t *tmp = json_array(); + unsigned int i; + + for (i = 0; i < array_size(osf_flags); i++) { + if (osf.flags & (1 << i)) { + json_array_append_new(tmp, json_string(osf_flags[i])); + } + } + json_object_set_new(root, "flags", tmp); + } + return json_pack("{s:o}", "osf", root); } diff --git a/src/parser_json.c b/src/parser_json.c index 7b190bc..ae197f0 100644 --- a/src/parser_json.c +++ b/src/parser_json.c @@ -377,10 +377,26 @@ static struct expr *json_parse_meta_expr(struct json_ctx *ctx, return meta_expr_alloc(int_loc, key); } +static int osf_flag_parse(const char *name, int *flagval) +{ + const char *osf_flags[] = { "version" }; + unsigned int i; + + for (i = 0; i < array_size(osf_flags); i++) { + if (!strcmp(name, osf_flags[i])) { + *flagval |= (1 << i); + return 0; + } + } + return 1; +} + static struct expr *json_parse_osf_expr(struct json_ctx *ctx, const char *type, json_t *root) { + json_t *flags, *value; const char *key, *ttl; + uint8_t flagval = 0; uint8_t ttlval = 0; if (json_unpack_err(ctx, root, "{s:s}", "key", &key)) @@ -397,8 +413,38 @@ static struct expr *json_parse_osf_expr(struct json_ctx *ctx, } } + if (!json_unpack(root, "{s:o}", "flags", &flags)) { + const char *flag; + + if (json_is_string(flags)) { + flag = json_string_value(flags); + + if (osf_flag_parse(flag, &flagval)) { + json_error(ctx, "Invalidad osf flag '%s'.", flag); + return NULL; + } + + } else if (!json_is_array) { + json_error(ctx, "Unexpected object type in osf flags tuple."); + return NULL; + } + + json_array_foreach(flags, index, value) { + if (!json_is_string(value)) { + json_error(ctx, "Unexpected object type in osf flags array at index %zd.", index); + return NULL; + } + flag = json_string_value(value); + + if (osf_flag_parse(flag, &flagval)) { + json_error(ctx, "Invalid osf flag '%s'.", flag); + return NULL; + } + } + } + if (!strcmp(key, "name")) - return osf_expr_alloc(int_loc, ttlval); + return osf_expr_alloc(int_loc, ttlval, flagval); json_error(ctx, "Invalid osf key value."); return NULL; From patchwork Mon Mar 11 15:14:14 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Fernando F. Mancera" X-Patchwork-Id: 1054515 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=pass (p=none dis=none) header.from=riseup.net Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=riseup.net header.i=@riseup.net header.b="rw10XOtx"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 44J1qG2DYHz9s47 for ; Tue, 12 Mar 2019 02:14:34 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727346AbfCKPOd (ORCPT ); Mon, 11 Mar 2019 11:14:33 -0400 Received: from mx1.riseup.net ([198.252.153.129]:50354 "EHLO mx1.riseup.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727342AbfCKPOc (ORCPT ); Mon, 11 Mar 2019 11:14:32 -0400 Received: from bell.riseup.net (bell-pn.riseup.net [10.0.1.178]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client CN "*.riseup.net", Issuer "COMODO RSA Domain Validation Secure Server CA" (verified OK)) by mx1.riseup.net (Postfix) with ESMTPS id E0C631A1639 for ; Mon, 11 Mar 2019 08:14:31 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak; t=1552317272; bh=oqVuEC9NaYxoiCdf5EBfKbDrHDBrUPURfdm6uZoexIo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=rw10XOtx1Ivtil95UnxHBhl3ew93MBa/VrYbv/kHY7oab7JiVBHt2c2734HJGMS+d XZVv84tEEt+edsxLaKFgrmtKV2ppKKdZxy9wt+n1PzD+7RqY/hT3SGoNa5wksJkTLz HUTVf1cLc49iLmqVF/ilTJmaoId1VATTFdbpq8Z0= X-Riseup-User-ID: 924E4BADBB8DE823A0C4F2172C7CB0FF3DFCC74C7AED9B662CB0C271C1BD735C Received: from [127.0.0.1] (localhost [127.0.0.1]) by bell.riseup.net (Postfix) with ESMTPSA id 0EEAB221C5D; Mon, 11 Mar 2019 08:14:30 -0700 (PDT) From: Fernando Fernandez Mancera To: netfilter-devel@vger.kernel.org Cc: Fernando Fernandez Mancera Subject: [PATCH nft v2 3/6] tests: py: add osf tests with versions Date: Mon, 11 Mar 2019 16:14:14 +0100 Message-Id: <20190311151417.17772-3-ffmancera@riseup.net> In-Reply-To: <20190311151417.17772-1-ffmancera@riseup.net> References: <20190311151417.17772-1-ffmancera@riseup.net> MIME-Version: 1.0 Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org Signed-off-by: Fernando Fernandez Mancera --- v1: initial patch v2: flags type is now u32 --- tests/py/inet/osf.t | 4 +++ tests/py/inet/osf.t.json | 16 +++++++++ tests/py/inet/osf.t.payload | 66 +++++++++++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+) diff --git a/tests/py/inet/osf.t b/tests/py/inet/osf.t index fd5d9ed..c8cac9b 100644 --- a/tests/py/inet/osf.t +++ b/tests/py/inet/osf.t @@ -7,8 +7,12 @@ osf name "Linux";ok osf ttl loose name "Linux";ok osf ttl skip name "Linux";ok +osf ttl skip name version "Linux:3.0";ok +osf ttl skip name version "morethan:sixteenbytes";fail osf ttl nottl name "Linux";fail osf name "morethansixteenbytes";fail osf name ;fail osf name { "Windows", "MacOs" };ok +osf name version { "Windows:XP", "MacOs:Sierra" };ok ct mark set osf name map { "Windows" : 0x00000001, "MacOs" : 0x00000002 };ok +ct mark set osf name version map { "Windows:XP" : 0x00000003, "MacOs:Sierra" : 0x00000004 };ok diff --git a/tests/py/inet/osf.t.json b/tests/py/inet/osf.t.json index 452f302..82a2638 100644 --- a/tests/py/inet/osf.t.json +++ b/tests/py/inet/osf.t.json @@ -45,6 +45,22 @@ } ] +# osf name version "Linux:3.0" +[ + { + "match": { + "left": { + "osf": { + "key": "name", + "flags": "version" + } + }, + "op": "==", + "right": "Linux:3.0" + } + } +] + # osf name { "Windows", "MacOs" } [ { diff --git a/tests/py/inet/osf.t.payload b/tests/py/inet/osf.t.payload index 9b8f0bc..8f708f2 100644 --- a/tests/py/inet/osf.t.payload +++ b/tests/py/inet/osf.t.payload @@ -43,6 +43,21 @@ inet osfinet osfchain [ osf dreg 1 ] [ cmp eq reg 1 0x756e694c 0x00000078 0x00000000 0x00000000 ] +# osf ttl skip name version "Linux:3.0" +ip osfip osfchain + [ osf dreg 1 ] + [ cmp eq reg 1 0x756e694c 0x2e333a78 0x00000030 0x00000000 ] + +# osf ttl skip name version "Linux:3.0" +ip6 osfip6 osfchain + [ osf dreg 1 ] + [ cmp eq reg 1 0x756e694c 0x2e333a78 0x00000030 0x00000000 ] + +# osf ttl skip name version "Linux:3.0" +inet osfinet osfchain + [ osf dreg 1 ] + [ cmp eq reg 1 0x756e694c 0x2e333a78 0x00000030 0x00000000 ] + # osf name { "Windows", "MacOs" } __set%d osfip 3 size 2 __set%d osfip 0 @@ -67,6 +82,30 @@ inet osfinet osfchain [ osf dreg 1 ] [ lookup reg 1 set __set%d ] +# osf name version { "Windows:XP", "MacOs:Sierra" } +__set%d osfip 3 size 2 +__set%d osfip 0 + element 646e6957 3a73776f 00005058 00000000 : 0 [end] element 4f63614d 69533a73 61727265 00000000 : 0 [end] +ip osfip osfchain + [ osf dreg 1 ] + [ lookup reg 1 set __set%d ] + +# osf name version { "Windows:XP", "MacOs:Sierra" } +__set%d osfip6 3 size 2 +__set%d osfip6 0 + element 646e6957 3a73776f 00005058 00000000 : 0 [end] element 4f63614d 69533a73 61727265 00000000 : 0 [end] +ip6 osfip6 osfchain + [ osf dreg 1 ] + [ lookup reg 1 set __set%d ] + +# osf name version { "Windows:XP", "MacOs:Sierra" } +__set%d osfinet 3 size 2 +__set%d osfinet 0 + element 646e6957 3a73776f 00005058 00000000 : 0 [end] element 4f63614d 69533a73 61727265 00000000 : 0 [end] +inet osfinet osfchain + [ osf dreg 1 ] + [ lookup reg 1 set __set%d ] + # ct mark set osf name map { "Windows" : 0x00000001, "MacOs" : 0x00000002 } __map%d osfip b size 2 __map%d osfip 0 @@ -93,3 +132,30 @@ inet osfinet osfchain [ osf dreg 1 ] [ lookup reg 1 set __map%d dreg 1 ] [ ct set mark with reg 1 ] + +# ct mark set osf name version map { "Windows:XP" : 0x00000003, "MacOs:Sierra" : 0x00000004 } +__map%d osfip b size 2 +__map%d osfip 0 + element 646e6957 3a73776f 00005058 00000000 : 00000003 0 [end] element 4f63614d 69533a73 61727265 00000000 : 00000004 0 [end] +ip osfip osfchain + [ osf dreg 1 ] + [ lookup reg 1 set __map%d dreg 1 ] + [ ct set mark with reg 1 ] + +# ct mark set osf name version map { "Windows:XP" : 0x00000003, "MacOs:Sierra" : 0x00000004 } +__map%d osfip6 b size 2 +__map%d osfip6 0 + element 646e6957 3a73776f 00005058 00000000 : 00000003 0 [end] element 4f63614d 69533a73 61727265 00000000 : 00000004 0 [end] +ip6 osfip6 osfchain + [ osf dreg 1 ] + [ lookup reg 1 set __map%d dreg 1 ] + [ ct set mark with reg 1 ] + +# ct mark set osf name version map { "Windows:XP" : 0x00000003, "MacOs:Sierra" : 0x00000004 } +__map%d osfinet b size 2 +__map%d osfinet 0 + element 646e6957 3a73776f 00005058 00000000 : 00000003 0 [end] element 4f63614d 69533a73 61727265 00000000 : 00000004 0 [end] +inet osfinet osfchain + [ osf dreg 1 ] + [ lookup reg 1 set __map%d dreg 1 ] + [ ct set mark with reg 1 ] From patchwork Mon Mar 11 15:14:15 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Fernando F. Mancera" X-Patchwork-Id: 1054516 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=pass (p=none dis=none) header.from=riseup.net Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=riseup.net header.i=@riseup.net header.b="Ap2hr1as"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 44J1qG72ZCz9s4Y for ; Tue, 12 Mar 2019 02:14:34 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727349AbfCKPOe (ORCPT ); Mon, 11 Mar 2019 11:14:34 -0400 Received: from mx1.riseup.net ([198.252.153.129]:50378 "EHLO mx1.riseup.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727320AbfCKPOd (ORCPT ); Mon, 11 Mar 2019 11:14:33 -0400 Received: from bell.riseup.net (bell-pn.riseup.net [10.0.1.178]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client CN "*.riseup.net", Issuer "COMODO RSA Domain Validation Secure Server CA" (verified OK)) by mx1.riseup.net (Postfix) with ESMTPS id 886531A64CE for ; Mon, 11 Mar 2019 08:14:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak; t=1552317273; bh=bfQM895gwJlBxDewQKS1VK2gZbLKYyxFkP4Z2SXBrYo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=Ap2hr1asuVIoKUkXIn/gBB87vN8hYWBtG7Wd4WOZgT+3tXln1pBKRjh/TSDUVHhg9 L34dg3LxQJsDe/ghBM592MYDtIY6TAN5L8GTVRqzqqP7CS2Z1aC7wAlR0ji+ffHlNq N1iRN++92GzQEOxyqhLdWpxHJE3D0C2plk7iBezI= X-Riseup-User-ID: E8183DF00CF9D93B14984604BB0DA50B1B57DA17C2C6A3AC2AB5E81406677D58 Received: from [127.0.0.1] (localhost [127.0.0.1]) by bell.riseup.net (Postfix) with ESMTPSA id ADE3D221C5D; Mon, 11 Mar 2019 08:14:32 -0700 (PDT) From: Fernando Fernandez Mancera To: netfilter-devel@vger.kernel.org Cc: Fernando Fernandez Mancera Subject: [PATCH nft v2 4/6] doc: add osf version option to man page Date: Mon, 11 Mar 2019 16:14:15 +0100 Message-Id: <20190311151417.17772-4-ffmancera@riseup.net> In-Reply-To: <20190311151417.17772-1-ffmancera@riseup.net> References: <20190311151417.17772-1-ffmancera@riseup.net> MIME-Version: 1.0 Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org Signed-off-by: Fernando Fernandez Mancera --- v1: initial patch v2: flags type is now u32 --- doc/primary-expression.txt | 2 ++ 1 file changed, 2 insertions(+) diff --git a/doc/primary-expression.txt b/doc/primary-expression.txt index d819b24..a62ed00 100644 --- a/doc/primary-expression.txt +++ b/doc/primary-expression.txt @@ -219,6 +219,8 @@ and others) from packets with the SYN bit set. |ttl| Do TTL checks on the packet to determine the operating system.| string +|version| +Do OS version checks on the packet.| |name| Name of the OS signature to match. All signatures can be found at pf.os file. Use "unknown" for OS signatures that the expression could not detect.| From patchwork Mon Mar 11 15:14:16 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Fernando F. Mancera" X-Patchwork-Id: 1054517 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=pass (p=none dis=none) header.from=riseup.net Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=riseup.net header.i=@riseup.net header.b="RWhv9F9f"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 44J1qJ1Kpbz9s47 for ; Tue, 12 Mar 2019 02:14:36 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727360AbfCKPOf (ORCPT ); Mon, 11 Mar 2019 11:14:35 -0400 Received: from mx1.riseup.net ([198.252.153.129]:50402 "EHLO mx1.riseup.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727320AbfCKPOf (ORCPT ); Mon, 11 Mar 2019 11:14:35 -0400 Received: from bell.riseup.net (bell-pn.riseup.net [10.0.1.178]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client CN "*.riseup.net", Issuer "COMODO RSA Domain Validation Secure Server CA" (verified OK)) by mx1.riseup.net (Postfix) with ESMTPS id E52F91A64B3 for ; Mon, 11 Mar 2019 08:14:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak; t=1552317275; bh=BWR8CkLIh2gYu4i/h0BBavQf5Ta0QDxeWb42Me2NHG8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=RWhv9F9fhqknJ0DfE7g6Hu1pBpx10KxOmpd/ORyyKqVi5ly3lYkq/dzJG/+AK8Xfz abYuuxEQDF3qRnUIEZC/MPs1jzy32INar50Friee+nCiltAamh5t6UmSxN0v14eU1/ 2Szn9EqsRYwvSsDYPGU8HuUkrOkWIMDiiEPuA5pU= X-Riseup-User-ID: 0024AD2E1772FB792A1DD80A6067366730EADDE07A8676E51FFD17080CBF4C77 Received: from [127.0.0.1] (localhost [127.0.0.1]) by bell.riseup.net (Postfix) with ESMTPSA id 1FA77221C5D; Mon, 11 Mar 2019 08:14:33 -0700 (PDT) From: Fernando Fernandez Mancera To: netfilter-devel@vger.kernel.org Cc: Fernando Fernandez Mancera Subject: [PATCH nft v2 5/6] files: osf: update pf.os with newer OS fingerprints Date: Mon, 11 Mar 2019 16:14:16 +0100 Message-Id: <20190311151417.17772-5-ffmancera@riseup.net> In-Reply-To: <20190311151417.17772-1-ffmancera@riseup.net> References: <20190311151417.17772-1-ffmancera@riseup.net> MIME-Version: 1.0 Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org After notice that some fingerprints are outdated we have updated the most common of them. Signed-off-by: Fernando Fernandez Mancera --- v1: initial patch v2: flags type is now u32 --- files/osf/pf.os | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/files/osf/pf.os b/files/osf/pf.os index e285851..7612d76 100644 --- a/files/osf/pf.os +++ b/files/osf/pf.os @@ -233,6 +233,10 @@ S4:64:1:60:M*,S,T,N,W7: Linux:2.6::Linux 2.6 (newer, 3) T4:64:1:60:M*,S,T,N,W7: Linux:2.6::Linux 2.6 (newer, 4) S10:64:1:60:M*,S,T,N,W4: Linux:3.0::Linux 3.0 +S10:64:1:60:M*,S,T,N,W6: Linux:3.1::Linux 3.1 +S10:64:1:60:M*,S,T,N,W7: Linux:3.4-3.10::Linux 3.4 - 3.10 +S20:64:1:60:M*,S,T,N,W7: Linux:3.11-4.19::Linux 3.11 - 4.19 +S44:64:1:60:M*,S,T,N,W7: Linux:4.20::Linux 4.20 S3:64:1:60:M*,S,T,N,W1: Linux:2.5::Linux 2.5 (sometimes 2.4) S4:64:1:60:M*,S,T,N,W1: Linux:2.5-2.6::Linux 2.5/2.6 @@ -284,6 +288,8 @@ S22:64:1:52:M*,N,N,S,N,W0: Linux:2.2:ts:Linux 2.2 w/o timestamps 65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:4.7-4.11::FreeBSD 4.7-5.2 65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:5.0-5.2::FreeBSD 4.7-5.2 +65535:64:1:60:M*,N,W6,S,T: FreeBSD:9.0-12.0::FreeBSD 9.0 - 12.0 + # XXX need quirks support # 65535:64:1:60:M*,N,W0,N,N,T:Z:FreeBSD:5.1-5.4::5.1-current (1) # 65535:64:1:60:M*,N,W1,N,N,T:Z:FreeBSD:5.1-5.4::5.1-current (2) From patchwork Mon Mar 11 15:14:17 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Fernando F. Mancera" X-Patchwork-Id: 1054518 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=pass (p=none dis=none) header.from=riseup.net Authentication-Results: ozlabs.org; dkim=pass (1024-bit key; secure) header.d=riseup.net header.i=@riseup.net header.b="MTY5k6Gx"; dkim-atps=neutral Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by ozlabs.org (Postfix) with ESMTP id 44J1qK5p5vz9s47 for ; Tue, 12 Mar 2019 02:14:37 +1100 (AEDT) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727412AbfCKPOh (ORCPT ); Mon, 11 Mar 2019 11:14:37 -0400 Received: from mx1.riseup.net ([198.252.153.129]:50426 "EHLO mx1.riseup.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727387AbfCKPOh (ORCPT ); Mon, 11 Mar 2019 11:14:37 -0400 Received: from bell.riseup.net (bell-pn.riseup.net [10.0.1.178]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (Client CN "*.riseup.net", Issuer "COMODO RSA Domain Validation Secure Server CA" (verified OK)) by mx1.riseup.net (Postfix) with ESMTPS id 6EDB31A058B for ; Mon, 11 Mar 2019 08:14:36 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak; t=1552317276; bh=lX+lgXsalpU2JSfSDeRVGe+jQe+Hw8XnSPry7Y/HP84=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=MTY5k6GxyM9d4FMoA0QJDNlYaTnvy2t0eByDimNFVgt6sG2PPvs+3rNCzW6/bw4Rs sYfocXUiFf7WaL2RTSCDExKrWZZ6hPj17oqLShSC0fZdcy2PFYKB6fdcWkEsRe7AbM lkLRQ5VdOwLI8yLA/YTdQEzJi/u3gXkDfDquK95U= X-Riseup-User-ID: CC94E2014263CDF85E038D3D0A59FD9A438419B3201F588D1851454E61FD39A7 Received: from [127.0.0.1] (localhost [127.0.0.1]) by bell.riseup.net (Postfix) with ESMTPSA id 9681F221C5D; Mon, 11 Mar 2019 08:14:35 -0700 (PDT) From: Fernando Fernandez Mancera To: netfilter-devel@vger.kernel.org Cc: Fernando Fernandez Mancera Subject: [PATCH nft v2 6/6] files: pf.os: merge the signatures spllited by version Date: Mon, 11 Mar 2019 16:14:17 +0100 Message-Id: <20190311151417.17772-6-ffmancera@riseup.net> In-Reply-To: <20190311151417.17772-1-ffmancera@riseup.net> References: <20190311151417.17772-1-ffmancera@riseup.net> MIME-Version: 1.0 Sender: netfilter-devel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: netfilter-devel@vger.kernel.org In order to be able to identify the OS version we need to merge the signatures split by version. eg. 65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:4.7-4.11::FreeBSD 4.7-5.2 65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:5.0-5.2::FreeBSD 4.7-5.2 65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:4.7-5.2::FreeBSD 4.7-5.2 Signed-off-by: Fernando Fernandez Mancera --- v1: initial patch v2: flags type is now u32 --- files/osf/pf.os | 40 ++++++++++++++-------------------------- 1 file changed, 14 insertions(+), 26 deletions(-) diff --git a/files/osf/pf.os b/files/osf/pf.os index 7612d76..35cbb47 100644 --- a/files/osf/pf.os +++ b/files/osf/pf.os @@ -201,12 +201,9 @@ 45046:64:0:44:M*: AIX:4.3::AIX 4.3 16384:64:0:44:M512: AIX:4.3:2-3:AIX 4.3.2 and earlier -16384:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2 -16384:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2 -32768:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2 -32768:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2 -65535:64:0:60:M512,N,W%2,N,N,T: AIX:4.3:3:AIX 4.3.3-5.2 -65535:64:0:60:M512,N,W%2,N,N,T: AIX:5.1-5.2::AIX 4.3.3-5.2 +16384:64:0:60:M512,N,W%2,N,N,T: AIX:4.3-5.2:3:AIX 4.3.3-5.2 +32768:64:0:60:M512,N,W%2,N,N,T: AIX:4.3-5.2:3:AIX 4.3.3-5.2 +65535:64:0:60:M512,N,W%2,N,N,T: AIX:4.3-5-2:3:AIX 4.3.3-5.2 65535:64:0:64:M*,N,W1,N,N,T,N,N,S: AIX:5.3:ML1:AIX 5.3 ML1 # ----------------- Linux ------------------- @@ -224,8 +221,7 @@ S4:64:1:60:M1360,S,T,N,W0: Linux:google::Linux (Google crawlbot) S2:64:1:60:M*,S,T,N,W0: Linux:2.4::Linux 2.4 (big boy) S3:64:1:60:M*,S,T,N,W0: Linux:2.4:.18-21:Linux 2.4.18 and newer -S4:64:1:60:M*,S,T,N,W0: Linux:2.4::Linux 2.4/2.6 <= 2.6.7 -S4:64:1:60:M*,S,T,N,W0: Linux:2.6:.1-7:Linux 2.4/2.6 <= 2.6.7 +S4:64:1:60:M*,S,T,N,W0: Linux:2.4/2.6::Linux 2.4/2.6 <= 2.6.7 S4:64:1:60:M*,S,T,N,W5: Linux:2.6::Linux 2.6 (newer, 1) S4:64:1:60:M*,S,T,N,W6: Linux:2.6::Linux 2.6 (newer, 2) @@ -271,9 +267,7 @@ S22:64:1:52:M*,N,N,S,N,W0: Linux:2.2:ts:Linux 2.2 w/o timestamps # ----------------- FreeBSD ----------------- -16384:64:1:44:M*: FreeBSD:2.0-2.2::FreeBSD 2.0-4.2 -16384:64:1:44:M*: FreeBSD:3.0-3.5::FreeBSD 2.0-4.2 -16384:64:1:44:M*: FreeBSD:4.0-4.2::FreeBSD 2.0-4.2 +16384:64:1:44:M*: FreeBSD:2.0-4.2::FreeBSD 2.0-4.2 16384:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.4::FreeBSD 4.4 1024:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.4::FreeBSD 4.4 @@ -281,12 +275,9 @@ S22:64:1:52:M*,N,N,S,N,W0: Linux:2.2:ts:Linux 2.2 w/o timestamps 57344:64:1:44:M*: FreeBSD:4.6-4.8:noRFC1323:FreeBSD 4.6-4.8 (no RFC1323) 57344:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.6-4.9::FreeBSD 4.6-4.9 -32768:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.8-4.11::FreeBSD 4.8-5.1 (or MacOS X) -32768:64:1:60:M*,N,W0,N,N,T: FreeBSD:5.0-5.1::FreeBSD 4.8-5.1 (or MacOS X) -65535:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.8-4.11::FreeBSD 4.8-5.2 (or MacOS X) -65535:64:1:60:M*,N,W0,N,N,T: FreeBSD:5.0-5.2::FreeBSD 4.8-5.2 (or MacOS X) -65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:4.7-4.11::FreeBSD 4.7-5.2 -65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:5.0-5.2::FreeBSD 4.7-5.2 +32768:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.8-5.1::FreeBSD 4.8-5.1 (or MacOS X) +65535:64:1:60:M*,N,W0,N,N,T: FreeBSD:4.8-5.2::FreeBSD 4.8-5.2 (or MacOS X) +65535:64:1:60:M*,N,W1,N,N,T: FreeBSD:4.7-5.2::FreeBSD 4.7-5.2 65535:64:1:60:M*,N,W6,S,T: FreeBSD:9.0-12.0::FreeBSD 9.0 - 12.0 @@ -378,8 +369,7 @@ S34:64:1:52:M*,N,W0,N,N,S: Solaris:10:beta:Solaris 10 (beta) # S2:255:1:48:M*,W0,E:.:MacOS:8.6 classic # XXX some of these use EOL too -16616:255:1:48:M*,W0: MacOS:7.3-7.6:OTTCP:MacOS 7.3-8.6 (OTTCP) -16616:255:1:48:M*,W0: MacOS:8.0-8.6:OTTCP:MacOS 7.3-8.6 (OTTCP) +16616:255:1:48:M*,W0: MacOS:7.3-8.6:OTTCP:MacOS 7.3-8.6 (OTTCP) 16616:255:1:48:M*,N,N,N: MacOS:8.1-8.6:OTTCP:MacOS 8.1-8.6 (OTTCP) 32768:255:1:48:M*,W0,N: MacOS:9.0-9.2::MacOS 9.0-9.2 65535:255:1:48:M*,N,N,N,N: MacOS:9.1::MacOS 9.1 (OT 2.7.4) @@ -515,8 +505,7 @@ S8:64:0:44:M512: NeXTSTEP:3.3::NeXTSTEP 3.3 # ------------------ OS/400 ----------------- -8192:64:1:60:M1440,N,W0,N,N,T: OS/400:VR4::OS/400 VR4/R5 -8192:64:1:60:M1440,N,W0,N,N,T: OS/400:VR5::OS/400 VR4/R5 +8192:64:1:60:M1440,N,W0,N,N,T: OS/400:VR4-VR5::OS/400 VR4/R5 4096:64:1:60:M1440,N,W0,N,N,T: OS/400:V4R5:CF67032:OS/400 V4R5 + CF67032 # XXX quirk @@ -532,9 +521,9 @@ S16:64:0:44:M512: QNX:::QNX demodisk # ------------------ Novell ----------------- -16384:128:1:44:M1460: Novell:NetWare:5.0:Novel Netware 5.0 -6144:128:1:44:M1460: Novell:IntranetWare:4.11:Novell IntranetWare 4.11 -6144:128:1:44:M1368: Novell:BorderManager::Novell BorderManager ? +16384:128:1:44:M1460: Novell:NW:5.0:Novel Netware 5.0 +6144:128:1:44:M1460: Novell:IW:4.11:Novell IntranetWare 4.11 +6144:128:1:44:M1368: Novell:BM::Novell BorderManager ? 6144:128:1:52:M*,W0,N,S,N,N: Novell:Netware:6:Novell Netware 6 SP3 @@ -637,8 +626,7 @@ S1:255:1:60:M1460,S,T,N,W0: LookSmart:ZyBorg::LookSmart ZyBorg # ----------- Embedded systems -------------- S9:255:0:44:M536: PalmOS:Tungsten:C:PalmOS Tungsten C -S5:255:0:44:M536: PalmOS:3::PalmOS 3/4 -S5:255:0:44:M536: PalmOS:4::PalmOS 3/4 +S5:255:0:44:M536: PalmOS:3-4::PalmOS 3/4 S4:255:0:44:M536: PalmOS:3:5:PalmOS 3.5 2948:255:0:44:M536: PalmOS:3:5:PalmOS 3.5.3 (Handera) S29:255:0:44:M536: PalmOS:5::PalmOS 5.0