diff --git a/README.md b/README.md index 580fc6a..ea95068 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 fa41d65..f959c19 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)