summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/nat/FEATURE.yaml27
-rwxr-xr-xsrc/scripts/fts.py18
2 files changed, 42 insertions, 3 deletions
diff --git a/src/plugins/nat/FEATURE.yaml b/src/plugins/nat/FEATURE.yaml
new file mode 100644
index 00000000000..65cd9590c69
--- /dev/null
+++ b/src/plugins/nat/FEATURE.yaml
@@ -0,0 +1,27 @@
+---
+name: Network Address Translation (NAT)
+maintainer:
+ - Ole Troan <ot@cisco.com>
+ - Filip Varga <fivarga@cisco.com>
+features:
+ - NAT44:
+ - 1:1 NAT
+ - 1:1 NAT with ports
+ - VRF awareness
+ - Multiple inside interfaces
+ - Hairpinning
+ - IPFIX
+ - Syslog
+ - Endpoint dependent NAT
+ - TCP MSS clamping
+ - Local bypass (DHCP)
+ - CGN - deterministic NAT
+ - NAT64
+ - NAT66
+ - DS-lite
+ - 464XLAT
+description: "The NAT plugin offers a multiple address translation functions.
+ These can be used in a raft of different scenarios. CPE, CGN,
+ etc."
+state: production
+properties: [API, CLI, STATS, MULTITHREAD]
diff --git a/src/scripts/fts.py b/src/scripts/fts.py
index eb44be9a59a..f3165ced0cd 100755
--- a/src/scripts/fts.py
+++ b/src/scripts/fts.py
@@ -17,9 +17,9 @@ schema = {
"properties": {
"name": {"type": "string"},
"description": {"type": "string"},
- "maintainer": {"type": "string"},
+ "maintainer": {"$ref": "#/definitions/maintainers"},
"state": {"type": "string",
- "enum": ["production", "experimental"]},
+ "enum": ["production", "experimental", "development"]},
"features": {"$ref": "#/definitions/features"},
"missing": {"$ref": "#/definitions/features"},
"properties": {"type": "array",
@@ -30,6 +30,14 @@ schema = {
},
"additionalProperties": False,
"definitions": {
+ "maintainers": {
+ "anyof": [{
+ "type": "array",
+ "items": {"type": "string"},
+ "minItems": 1,
+ },
+ {"type": "string"}],
+ },
"featureobject": {
"type": "object",
"patternProperties": {
@@ -86,7 +94,11 @@ def output_features(indent, fl):
def output_markdown(features):
for k, v in features.items():
print('# {}'.format(v['name']))
- print('Maintainer: {} '.format(v['maintainer']))
+ if type(v['maintainer']) is list:
+ print('Maintainers: ' +
+ ', '.join('{}'.format(m) for m in v['maintainer']))
+ else:
+ print('Maintainer: {} '.format(v['maintainer']))
print('State: {}\n'.format(v['state']))
print('{}\n'.format(v['description']))
output_features(0, v['features'])