Compare commits

..

19 Commits

Author SHA1 Message Date
jacky1100002
bcde6a7155 Merge branch 'main' into link_aggregation 2024-08-13 18:36:32 +08:00
Olexandr, Mazur
82f5eb7740 Merge pull request #19 from Telecominfraproject/jumbo_frames
support jumbo frames
2024-08-13 11:09:26 +03:00
Olexandr, Mazur
ceccdef561 Merge pull request #18 from Telecominfraproject/lacp
support LACP
2024-08-13 11:09:15 +03:00
jacky1100002
80a598fadf Merge branch 'main' into lacp 2024-08-12 17:43:00 +08:00
jacky1100002
81e8cd5706 Merge branch 'main' into link_aggregation 2024-08-12 17:40:36 +08:00
jacky1100002
8a4815187f Merge branch 'main' into jumbo_frames 2024-08-12 17:32:34 +08:00
jacky_chang
e8da89616e generate corresponding json files 2024-08-12 10:33:59 +08:00
jacky_chang
5da5b090be generate corresponding json files 2024-08-12 10:32:10 +08:00
jacky_chang
f9e15067ff generate corresponding json files 2024-08-12 10:28:53 +08:00
Mike Hansen
4235960ab8 Merge pull request #22 from Telecominfraproject/OLS-229-generate-json-file-for-capabilities-connect.capabilities.yml
[OLS-229] generate json file for capabilities/connect.capabilities.yml
2024-08-08 13:31:31 -04:00
Mike Hansen
7e839b0681 Merge pull request #21 from Telecominfraproject/OLS-228-delta_counters
[OLS-228] Schema -- adding delta_counters
2024-08-08 13:30:53 -04:00
Mike Hansen
b98f8a2b46 [OLS-229] generate json file for capabilities/connect.capabilities.yml
Signed-off-by: Mike Hansen <mike.hansen@netexperience.com>
2024-08-06 14:03:43 -04:00
Mike Hansen
1de6cad7e8 [OLS-228] Schema
Add delta_counters to

state/interface.yml

state/link-state.yml

Signed-off-by: Mike Hansen <mike.hansen@netexperience.com>
2024-08-06 13:58:37 -04:00
Olexandr, Mazur
0f9f4489d2 Merge pull request #17 from Telecominfraproject/secure_http_server
add whether enabled & port number support for https
2024-08-06 12:49:01 +03:00
jacky_chang
5dc634f78e support link aggregation 2024-08-06 13:29:06 +08:00
jacky_chang
4d03a432c1 support jumbo frmaes 2024-08-06 11:08:10 +08:00
jacky_chang
ee945311e1 support LACP 2024-08-06 10:38:40 +08:00
Olexandr, Mazur
747ccb4993 Merge pull request #16 from Telecominfraproject/fix/capabilities_add_missing_field
Schema: capabilities: add missed <compatible> field
2024-06-05 17:25:31 +03:00
Oleksandr Mazur
a0fac0b3d7 Schema: capabilities: add missed <compatible> field
Connect message is required to have compatible field,
as it defines device's <family> of devices and compatible
counterparts.

Add this - originally missed - field to the schema, to make
sure cloud infrastructure has enough information to deduce
device type / compatible devices (for cfg generation etc).

Signed-off-by: Oleksandr Mazur <oleksandr.mazur@plvision.eu>
2024-06-05 11:30:47 +03:00
15 changed files with 994 additions and 1 deletions

View File

@@ -25,6 +25,10 @@ properties:
type: string
description:
Stock keeping unit
compatible:
type: string
description:
Compatibility string, that defines the family of the device
base-mac:
type: string
description:

View File

@@ -7,7 +7,8 @@ set -x
./merge-schema.py schema schema ucentral.yml ucentral.schema.pretty.json 0 1
./merge-schema.py schema schema ucentral.yml ucentral.schema.full.json 0 0
./merge-schema.py state state state.yml ucentral.state.pretty.json 0 1
./generate-reader.uc > schemareader.uc
./merge-schema.py capabilities capabilities connect.capabilities.yml ucentral.capabilities.pretty.json 0 1
#./generate-reader.uc > schemareader.uc
#./generate-example.uc > input.json
mkdir -p docs
which generate-schema-doc > /dev/null

View File

@@ -161,3 +161,69 @@ properties:
type: integer
minimum: 1
maximum: 4094
trunk-group:
description: Associates this port to a trunk or a port-channel.
type: integer
minimum: 1
maximum: 64
lacp-config:
description:
This section describes the 802.3ad Link Aggregation Control Protocol (LACP) configuration for the current interface.
type: object
properties:
lacp-enable:
description:
Enables 802.3ad Link Aggregation Control Protocol (LACP) for the current interface.
type: boolean
default: false
lacp-role:
description:
Configures the port LACP role as actor or partner.
type: string
enum:
- actor
- partner
default: actor
lacp-mode:
description:
Configures the LACP negotiation activity mode as active or passive.
type: string
enum:
- active
- passive
default: passive
lacp-port-admin-key:
description:
Configures the port's LACP administration key.
type: integer
minimum: 1
maximum: 65535
default: 1
lacp-port-priority:
description:
Configures the LACP port priority.
type: integer
minimum: 1
maximum: 65535
default: 32768
lacp-system-priority:
description:
Configures the LACP System priority.
type: integer
minimum: 1
maximum: 65535
default: 32768
lacp-pchan-admin-key:
description:
Configures the port channel's LACP administration key (optional).
type: integer
minimum: 1
maximum: 65535
lacp-timeout:
description:
Configures the timeout to wait for the next LACP data unit.
type: string
enum:
- short
- long
default: long

View File

@@ -223,3 +223,20 @@ properties:
type: array
items:
type: string
trunk-balance-method:
description:
Sets the load-distribution method among ports in aggregated links for both static and LACP based trunks.
type: string
enum:
- dst-ip
- dst-mac
- src-dst-ip
- src-dst-mac
- src-ip
- src-mac
default: src-dst-mac
jumbo-frames:
description:
Enables Jumbo frames
type: boolean
default: false

View File

@@ -1044,6 +1044,197 @@ function instantiateEthernet(location, value, errors) {
obj.ieee8021x = parseIeee8021x(location + "/ieee8021x", value["ieee8021x"], errors);
}
function parseLacpConfig(location, value, errors) {
if (type(value) == "object") {
let obj = {};
function parseLacpEnable(location, value, errors) {
if (type(value) != "bool")
push(errors, [ location, "must be of type boolean" ]);
return value;
}
if (exists(value, "lacp-enable")) {
obj.lacp_enable = parseLacpEnable(location + "/lacp-enable", value["lacp-enable"], errors);
}
else {
obj.lacp_enable = false;
}
function parseLacpRole(location, value, errors) {
if (type(value) != "string")
push(errors, [ location, "must be of type string" ]);
if (!(value in [ "actor", "partner" ]))
push(errors, [ location, "must be one of \"actor\" or \"partner\"" ]);
return value;
}
if (exists(value, "lacp-role")) {
obj.lacp_role = parseLacpRole(location + "/lacp-role", value["lacp-role"], errors);
}
else {
obj.lacp_role = "actor";
}
function parseLacpMode(location, value, errors) {
if (type(value) != "string")
push(errors, [ location, "must be of type string" ]);
if (!(value in [ "active", "passive" ]))
push(errors, [ location, "must be one of \"active\" or \"passive\"" ]);
return value;
}
if (exists(value, "lacp-mode")) {
obj.lacp_mode = parseLacpMode(location + "/lacp-mode", value["lacp-mode"], errors);
}
else {
obj.lacp_mode = "passive";
}
function parseLacpPortAdminKey(location, value, errors) {
if (type(value) in [ "int", "double" ]) {
if (value > 65535)
push(errors, [ location, "must be lower than or equal to 65535" ]);
if (value < 1)
push(errors, [ location, "must be bigger than or equal to 1" ]);
}
if (type(value) != "int")
push(errors, [ location, "must be of type integer" ]);
return value;
}
if (exists(value, "lacp-port-admin-key")) {
obj.lacp_port_admin_key = parseLacpPortAdminKey(location + "/lacp-port-admin-key", value["lacp-port-admin-key"], errors);
}
else {
obj.lacp_port_admin_key = 1;
}
function parseLacpPortPriority(location, value, errors) {
if (type(value) in [ "int", "double" ]) {
if (value > 65535)
push(errors, [ location, "must be lower than or equal to 65535" ]);
if (value < 1)
push(errors, [ location, "must be bigger than or equal to 1" ]);
}
if (type(value) != "int")
push(errors, [ location, "must be of type integer" ]);
return value;
}
if (exists(value, "lacp-port-priority")) {
obj.lacp_port_priority = parseLacpPortPriority(location + "/lacp-port-priority", value["lacp-port-priority"], errors);
}
else {
obj.lacp_port_priority = 32768;
}
function parseLacpSystemPriority(location, value, errors) {
if (type(value) in [ "int", "double" ]) {
if (value > 65535)
push(errors, [ location, "must be lower than or equal to 65535" ]);
if (value < 1)
push(errors, [ location, "must be bigger than or equal to 1" ]);
}
if (type(value) != "int")
push(errors, [ location, "must be of type integer" ]);
return value;
}
if (exists(value, "lacp-system-priority")) {
obj.lacp_system_priority = parseLacpSystemPriority(location + "/lacp-system-priority", value["lacp-system-priority"], errors);
}
else {
obj.lacp_system_priority = 32768;
}
function parseLacpPchanAdminKey(location, value, errors) {
if (type(value) in [ "int", "double" ]) {
if (value > 65535)
push(errors, [ location, "must be lower than or equal to 65535" ]);
if (value < 1)
push(errors, [ location, "must be bigger than or equal to 1" ]);
}
if (type(value) != "int")
push(errors, [ location, "must be of type integer" ]);
return value;
}
if (exists(value, "lacp-pchan-admin-key")) {
obj.lacp_pchan_admin_key = parseLacpPchanAdminKey(location + "/lacp-pchan-admin-key", value["lacp-pchan-admin-key"], errors);
}
function parseLacpTimeout(location, value, errors) {
if (type(value) != "string")
push(errors, [ location, "must be of type string" ]);
if (!(value in [ "short", "long" ]))
push(errors, [ location, "must be one of \"short\" or \"long\"" ]);
return value;
}
if (exists(value, "lacp-timeout")) {
obj.lacp_timeout = parseLacpTimeout(location + "/lacp-timeout", value["lacp-timeout"], errors);
}
else {
obj.lacp_timeout = "long";
}
return obj;
}
if (type(value) != "object")
push(errors, [ location, "must be of type object" ]);
return value;
}
if (exists(value, "lacp-config")) {
obj.lacp_config = parseLacpConfig(location + "/lacp-config", value["lacp-config"], errors);
}
function parseTrunkGroup(location, value, errors) {
if (type(value) in [ "int", "double" ]) {
if (value > 64)
push(errors, [ location, "must be lower than or equal to 64" ]);
if (value < 1)
push(errors, [ location, "must be bigger than or equal to 1" ]);
}
if (type(value) != "int")
push(errors, [ location, "must be of type integer" ]);
return value;
}
if (exists(value, "trunk-group")) {
obj.trunk_group = parseTrunkGroup(location + "/trunk-group", value["trunk-group"], errors);
}
return obj;
}
@@ -1678,6 +1869,37 @@ function instantiateSwitch(location, value, errors) {
obj.port_isolation = parsePortIsolation(location + "/port-isolation", value["port-isolation"], errors);
}
function parseJumboFrames(location, value, errors) {
if (type(value) != "bool")
push(errors, [ location, "must be of type boolean" ]);
return value;
}
if (exists(value, "jumbo-frames")) {
obj.jumbo_frames = parseJumboFrames(location + "/jumbo-frames", value["jumbo-frames"], errors);
}
else {
obj.jumbo_frames = false;
}
function parseTrunkBalanceMethod(location, value, errors) {
if (type(value) != "string")
push(errors, [ location, "must be of type string" ]);
if (!(value in [ "dst-ip", "dst-mac", "src-dst-ip", "src-dst-mac", "src-ip", "src-mac" ]))
push(errors, [ location, "must be one of \"dst-ip\", \"dst-mac\", \"src-dst-ip\", \"src-dst-mac\", \"src-ip\" or \"src-mac\"" ]);
return value;
}
if (exists(value, "trunk-balance-method")) {
obj.trunk_balance_method = parseTrunkBalanceMethod(location + "/trunk-balance-method", value["trunk-balance-method"], errors);
}
else {
obj.trunk_balance_method = "src-dst-mac";
}
return obj;
}

View File

@@ -38,6 +38,8 @@ items:
$ref: "https://ucentral.io/state/v1/interface/clients/"
counters:
$ref: "https://ucentral.io/state/v1/interface/counter/"
delta_counters:
$ref: "https://ucentral.io/state/v1/interface/counter/"
mesh-path:
$ref: "https://ucentral.io/state/v1/interface/mesh-path/"
ssids:

67
state/lacp-trunks.yml Normal file
View File

@@ -0,0 +1,67 @@
type: array
items:
type: object
description:
List of dynamically created trunks.
properties:
trunk-identifier:
type: integer
description:
Logical identifier for the trunk.
minimum: 1
maximum: 64
member-port:
type: string
description: List of member ports under this trunk.
system-priority:
type: number
description:
LACP System priority.
port-priority:
type: number
description:
LACP port priority.
port-state:
type: string
description:
Port state.
lacpdu-sent:
type: number
description:
Number of LACP Data Units (PDUs) sent.
lacpdu-recv:
type: number
description:
Number of LACP Data Units (PDUs) received.
markerpdu-sent:
type: number
description:
Number of Marker PDUs sent.
markerpdu-recv:
type: number
description:
Number of Marker PDUs received.
unknownpkt-recv:
type: number
description:
Number of unknown packets received.
illegalpkt-recv:
type: number
description:
Number of illegal packets received.
port-oper-key:
type: number
description:
Operational key for the port.
partner-oper-key:
type: number
description:
Operational key for the partner.
oper-state:
type: string
description:
Operational state.
partner-oper-state:
type: string
description:
Operational state of the partner.

View File

@@ -19,6 +19,8 @@ properties:
- half
counters:
$ref: "https://ucentral.io/state/v1/interface/counter/"
delta_counters:
$ref: "https://ucentral.io/state/v1/interface/counter/"
poe:
description:
This section describes the ethernet poe-port link-state object (statistics + PD info).

View File

@@ -54,3 +54,7 @@ properties:
$ref: "https://ucentral.io/state/v1/link-state/"
mac-address-list:
$ref: "https://ucentral.io/state/v1/mac-address-list/"
static-trunks:
$ref: "https://ucentral.io/state/v1/static-trunks/"
lacp-trunks:
$ref: "https://ucentral.io/state/v1/lacp-trunks/"

18
state/static-trunks.yml Normal file
View File

@@ -0,0 +1,18 @@
type: array
items:
type: object
description:
List of statically created trunks.
properties:
trunk-identifier:
type: integer
description:
Logical identifier for the trunk.
minimum: 1
maximum: 64
member-ports:
type: array
description:
List of member ports under this static trunk.
items:
type: string

View File

@@ -0,0 +1,231 @@
{
"description": "uCentral protocol (OpenLan) device and features capabilities schema",
"type": "object",
"properties": {
"serial": {
"type": "string",
"examples": [
"aabbccddeeff"
]
},
"firmware": {
"type": "string",
"description": "Platform revision",
"examples": [
"Rel 1.6 build 5"
]
},
"platform": {
"type": "string",
"enum": [
"Switch",
"AP"
]
},
"model": {
"type": "string",
"description": "Device model"
},
"hw-sku": {
"type": "string",
"description": "Stock keeping unit"
},
"compatible": {
"type": "string",
"description": "Compatibility string, that defines the family of the device"
},
"base-mac": {
"type": "string",
"description": "Switch MAC address",
"format": "uc-mac",
"examples": [
"aa:bb:cc:dd:ee:ff"
]
},
"port-list": {
"type": "array",
"description": "The list of physical network devices",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"description": "The logical name of the port that is used by the OS",
"examples": [
"Ethernet0",
"Ethernet1",
"Ethernet76"
]
},
"front-panel-number": {
"type": "integer",
"description": "The identification number of the port as can be seen on the front-panel of the device"
}
}
}
},
"port-capabilities": {
"type": "object",
"description": "Description of physical ports and their form-factors",
"properties": {
"form-factors": {
"type": "array",
"items": {
"type": "string",
"enum": [
"RJ45",
"SFP",
"SFP+",
"SFP28",
"SFP-DD",
"QSFP",
"QSFP+",
"QSFP28",
"QSFP-DD"
]
}
},
"ports-list": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"examples": [
"RJ45"
]
},
"ports": {
"type": "array",
"items": {
"type": "string",
"examples": [
"Ethernet1"
]
}
}
}
}
}
}
},
"poe-capabilities": {
"type": "object",
"description": "Description of physical ports and their PoE capabilities",
"properties": {
"supported-standards": {
"type": "array",
"items": {
"type": "string",
"enum": [
".3AF-POE",
".3AT-POE+",
".3BT-PoE++",
"PreStandard-Passive"
]
}
},
"power-budget": {
"type": "integer",
"examples": [
2000
]
},
"poe-ports": {
"type": "array",
"items": {
"type": "object",
"properties": {
"type": {
"type": "string",
"examples": [
".3AF-POE"
]
},
"budget-capacity": {
"type": "integer"
},
"ports": {
"type": "array",
"items": {
"type": "string",
"examples": [
"Ethernet1"
]
}
}
}
}
}
}
},
"supported-features": {
"type": "array",
"description": "List of all features supported by the device",
"items": {
"type": "string",
"enum": [
"VLAN",
"Port-Isolation",
"Spanning-Tree",
"Spanning-Tree-Rapid",
"Spanning-Tree-Per-VLAN",
"Spanning-Tree-Per-VLAN-Rapid",
"Spanning-Tree-MSTP",
"SVI-StaticIPv4",
"SVI-StaticIPv6",
"Interface-StaticIPv4",
"Interface-StaticIPv6",
"Routing-VRF",
"Routing-IPv4-Route-Blackhole",
"Routing-IPv4-Route-Unreachable",
"Routing-IPv4-Nexthop",
"Routing-IPv4-Broadcast",
"Routing-IPv4-Multicast-IGMP-Snooping",
"Routing-IPv4-Multicast-IGMP-Querier",
"Routing-IPv4-Multicast-IGMP-Static",
"Routing-IPv4-DHCP-Server",
"Routing-IPv4-DHCP-Relay",
"Routing-IPv4-DHCP-Snooping",
"Routing-IPv4-Port-Forward",
"Routing-IPv6-DHCP-Relay",
"Routing-IPv6-DHCP-Stateful",
"Routing-IPv6-DHCP-Stateless",
"Routing-IPv6-Port-Forward",
"PoE-Reset",
"Port-Access-Control",
"PAC-Dynamic-Auth",
"System-PasswordChange",
"System-SwUpdate",
"System-SwUpdate-Partial",
"Port-Mirroring",
"Service-SSH",
"Service-RSSH",
"Service-Telnet",
"Service-LLDP",
"Service-HTTP",
"Service-HTTPS",
"Service-GPS",
"Service-IGMP",
"Service-NTP",
"Service-MDNS",
"Service-QoS",
"Service-Syslog",
"Service-PAC",
"Service-Wireguard-Overlay",
"Service-Radius-Proxy",
"Service-Online-Check",
"Service-CaptivePortal",
"Service-PublicIpCheck",
"Tunneling-VxLAN",
"Tunneling-GRE",
"Tunneling-GRE6",
"Tunneling-L2TP",
"Tunneling-Mesh"
]
}
}
},
"$defs": {}
}

View File

@@ -685,6 +685,77 @@
"maximum": 4094
}
}
},
"trunk-group": {
"description": "Associates this port to a trunk or a port-channel.",
"type": "integer",
"minimum": 1,
"maximum": 64
},
"lacp-config": {
"description": "This section describes the 802.3ad Link Aggregation Control Protocol (LACP) configuration for the current interface.",
"type": "object",
"properties": {
"lacp-enable": {
"description": "Enables 802.3ad Link Aggregation Control Protocol (LACP) for the current interface.",
"type": "boolean",
"default": false
},
"lacp-role": {
"description": "Configures the port LACP role as actor or partner.",
"type": "string",
"enum": [
"actor",
"partner"
],
"default": "actor"
},
"lacp-mode": {
"description": "Configures the LACP negotiation activity mode as active or passive.",
"type": "string",
"enum": [
"active",
"passive"
],
"default": "passive"
},
"lacp-port-admin-key": {
"description": "Configures the port's LACP administration key.",
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": 1
},
"lacp-port-priority": {
"description": "Configures the LACP port priority.",
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": 32768
},
"lacp-system-priority": {
"description": "Configures the LACP System priority.",
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": 32768
},
"lacp-pchan-admin-key": {
"description": "Configures the port channel's LACP administration key (optional).",
"type": "integer",
"minimum": 1,
"maximum": 65535
},
"lacp-timeout": {
"description": "Configures the timeout to wait for the next LACP data unit.",
"type": "string",
"enum": [
"short",
"long"
],
"default": "long"
}
}
}
}
}
@@ -925,6 +996,23 @@
}
}
}
},
"trunk-balance-method": {
"description": "Sets the load-distribution method among ports in aggregated links for both static and LACP based trunks.",
"type": "string",
"enum": [
"dst-ip",
"dst-mac",
"src-dst-ip",
"src-dst-mac",
"src-ip",
"src-mac"
],
"default": "src-dst-mac"
"jumbo-frames": {
"description": "Enables Jumbo frames",
"type": "boolean",
"default": false
}
}
},

View File

@@ -477,6 +477,67 @@
"maximum": 4094
}
}
},
"trunk-group": {
"type": "integer",
"minimum": 1,
"maximum": 64
},
"lacp-config": {
"type": "object",
"properties": {
"lacp-enable": {
"type": "boolean",
"default": false
},
"lacp-role": {
"type": "string",
"enum": [
"actor",
"partner"
],
"default": "actor"
},
"lacp-mode": {
"type": "string",
"enum": [
"active",
"passive"
],
"default": "passive"
},
"lacp-port-admin-key": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": 1
},
"lacp-port-priority": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": 32768
},
"lacp-system-priority": {
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": 32768
},
"lacp-pchan-admin-key": {
"type": "integer",
"minimum": 1,
"maximum": 65535
},
"lacp-timeout": {
"type": "string",
"enum": [
"short",
"long"
],
"default": "long"
}
}
}
}
},
@@ -678,6 +739,22 @@
}
}
}
},
"trunk-balance-method": {
"type": "string",
"enum": [
"dst-ip",
"dst-mac",
"src-dst-ip",
"src-dst-mac",
"src-ip",
"src-mac"
],
"default": "src-dst-mac"
},
"jumbo-frames": {
"type": "boolean",
"default": false
}
}
},

View File

@@ -537,6 +537,77 @@
"maximum": 4094
}
}
},
"trunk-group": {
"description": "Associates this port to a trunk or a port-channel.",
"type": "integer",
"minimum": 1,
"maximum": 64
},
"lacp-config": {
"description": "This section describes the 802.3ad Link Aggregation Control Protocol (LACP) configuration for the current interface.",
"type": "object",
"properties": {
"lacp-enable": {
"description": "Enables 802.3ad Link Aggregation Control Protocol (LACP) for the current interface.",
"type": "boolean",
"default": false
},
"lacp-role": {
"description": "Configures the port LACP role as actor or partner.",
"type": "string",
"enum": [
"actor",
"partner"
],
"default": "actor"
},
"lacp-mode": {
"description": "Configures the LACP negotiation activity mode as active or passive.",
"type": "string",
"enum": [
"active",
"passive"
],
"default": "passive"
},
"lacp-port-admin-key": {
"description": "Configures the port's LACP administration key.",
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": 1
},
"lacp-port-priority": {
"description": "Configures the LACP port priority.",
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": 32768
},
"lacp-system-priority": {
"description": "Configures the LACP System priority.",
"type": "integer",
"minimum": 1,
"maximum": 65535,
"default": 32768
},
"lacp-pchan-admin-key": {
"description": "Configures the port channel's LACP administration key (optional).",
"type": "integer",
"minimum": 1,
"maximum": 65535
},
"lacp-timeout": {
"description": "Configures the timeout to wait for the next LACP data unit.",
"type": "string",
"enum": [
"short",
"long"
],
"default": "long"
}
}
}
}
},
@@ -776,6 +847,24 @@
}
}
}
},
"trunk-balance-method": {
"description": "Sets the load-distribution method among ports in aggregated links for both static and LACP based trunks.",
"type": "string",
"enum": [
"dst-ip",
"dst-mac",
"src-dst-ip",
"src-dst-mac",
"src-ip",
"src-mac"
],
"default": "src-dst-mac"
},
"jumbo-frames": {
"description": "Enables Jumbo frames",
"type": "boolean",
"default": false
}
}
},

View File

@@ -78,6 +78,12 @@
},
"mac-address-list": {
"$ref": "#/$defs/mac-address-list"
},
"static-trunks": {
"$ref": "#/$defs/static-trunks"
},
"lacp-trunks": {
"$ref": "#/$defs/lacp-trunks"
}
},
"$defs": {
@@ -759,6 +765,9 @@
"counters": {
"$ref": "#/$defs/interface.counter"
},
"delta_counters": {
"$ref": "#/$defs/interface.counter"
},
"mesh-path": {
"$ref": "#/$defs/interface.mesh-path"
},
@@ -887,6 +896,9 @@
"counters": {
"$ref": "#/$defs/interface.counter"
},
"delta_counters": {
"$ref": "#/$defs/interface.counter"
},
"poe": {
"description": "This section describes the ethernet poe-port link-state object (statistics + PD info). Present only in case if port has any Power sourcing capabilities.",
"type": "object",
@@ -1092,6 +1104,99 @@
}
}
]
},
"static-trunks": {
"type": "array",
"items": {
"type": "object",
"description": "List of statically created trunks.",
"properties": {
"trunk-identifier": {
"type": "integer",
"description": "Logical identifier for the trunk.",
"minimum": 1,
"maximum": 64
},
"member-ports": {
"type": "array",
"description": "List of member ports under this static trunk.",
"items": {
"type": "string"
}
}
}
}
},
"lacp-trunks": {
"type": "array",
"items": {
"type": "object",
"description": "List of dynamically created trunks.",
"properties": {
"trunk-identifier": {
"type": "integer",
"description": "Logical identifier for the trunk.",
"minimum": 1,
"maximum": 64
},
"member-port": {
"type": "string",
"description": "List of member ports under this trunk."
},
"system-priority": {
"type": "number",
"description": "LACP System priority."
},
"port-priority": {
"type": "number",
"description": "LACP port priority."
},
"port-state": {
"type": "string",
"description": "Port state."
},
"lacpdu-sent": {
"type": "number",
"description": "Number of LACP Data Units (PDUs) sent."
},
"lacpdu-recv": {
"type": "number",
"description": "Number of LACP Data Units (PDUs) received."
},
"markerpdu-sent": {
"type": "number",
"description": "Number of Marker PDUs sent."
},
"markerpdu-recv": {
"type": "number",
"description": "Number of Marker PDUs received."
},
"unknownpkt-recv": {
"type": "number",
"description": "Number of unknown packets received."
},
"illegalpkt-recv": {
"type": "number",
"description": "Number of illegal packets received."
},
"port-oper-key": {
"type": "number",
"description": "Operational key for the port."
},
"partner-oper-key": {
"type": "number",
"description": "Operational key for the partner."
},
"oper-state": {
"type": "string",
"description": "Operational state."
},
"partner-oper-state": {
"type": "string",
"description": "Operational state of the partner."
}
}
}
}
}
}