From df1d75ac821127c2f7ad2d2006da873c7db42f8e Mon Sep 17 00:00:00 2001 From: Alexander Schlarb Date: Tue, 25 Aug 2020 12:24:04 +0200 Subject: [PATCH] Add reserved code range for private use by applications See GH/multiformats/multicodec#158. Changes are analogous to those proposed in GH/multiformats/multicodec#159. --- README.md | 11 +++++++++++ validate.py | 6 ++++++ 2 files changed, 17 insertions(+) diff --git a/README.md b/README.md index 580fc6ad..ea95068d 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ - [Multicodec table](#multicodec-table) - [Adding new multicodecs to the table](#adding-new-multicodecs-to-the-table) - [Implementations](#implementations) +- [Reserved Code Ranges](#reserved-code-ranges) - [FAQ](#faq) - [Contribute](#contribute) - [License](#license) @@ -62,6 +63,16 @@ The `validate.py` script can be used to validate the table once it's edited. - [Ruby](https://github.com/sleeplessbyte/ruby-multicodec) - [Add yours today!](https://github.com/multiformats/multicodec/edit/master/table.csv) +## Reserved Code Ranges + +The following code ranges have special meaning and may only have meanings assigned to as specified in their description: + +### Private Use Area + +*Range*: `0x300000 – 0x3FFFFF` + +Codes in this range are reserved for internal use by applications and will never be assigned any meaning as part of the Multicodec specification. + ## FAQ > Why varints? diff --git a/validate.py b/validate.py index fa41d652..f959c19e 100755 --- a/validate.py +++ b/validate.py @@ -72,6 +72,12 @@ class CheckError(Exception): ) else: codes[code] = name + + # Reserved Code Range: Private Use Area – Do not permit any codes in this range + if code in range(0x300000, 0x400000): + raise CheckError( + f"found code in Private Use Area: {hex(code)} with name '{name}'" + ) except CheckError as e: success = False print(f"row {line}: {e}", file=sys.stderr)