"component[name='angtel-component']/angtel-stp:spanning-tree/forwarding-delay"))
if 2*(fwd[1] - 1) < args["max-age"] then
s:output("Wrong value! 2 * (Bridge Forward Delay - 1 second) must be >= Bridge Max Age")
return
end
local p = {
operation = "replace",
target = "/ieee802-dot1q-bridge:bridges/bridge[name='br0']/" ..
"component[name='angtel-component']/" ..
"angtel-stp:spanning-tree/max-age",
value = {
["max-age"] = args["max-age"]
}
}
s:cdb_edit_config(p)
end
},
["spanning-tree priority"] = {
description = "Configure the device STP priority",
usage_info = "priority",
parameters = {
"priority\tSpecifies the bridge priority. Range: 0-61440. Default is 32768. " ..
"The priority value must be a multiple of 4096.\n"
},
args = {
{
type = "positional",
name = "priority",
vtype = "int",
nvalues = "1",
description = "Bridge priority",
required = true
}
},
handler = function(s, args)
assert(args.priority % 4096 == 0, "Priority must be a multiple of 4096")
local p = {
operation = "replace",
target = "/ieee802-dot1q-bridge:bridges/bridge[name='br0']/" ..
"component[name='angtel-component']/" ..
"angtel-stp:spanning-tree/bridge-priority",
value = {
["bridge-priority"] = args.priority
}
}
s:cdb_edit_config(p)
end
},
["spanning-tree hello-time"] = {
description = "Configure the device STP hello time",
usage_info = "hello-time",
parameters = {
"hello-time\tSpecifies the bridge hello-time. Range: 0-10. Default is 2. "
},
args = {
{
type = "positional",
name = "hello-time",
vtype = "int",
nvalues = "1",
description = "Bridge hello-time",
required = true
}
},
handler = function(s, args)
local max_age = c.strip_cdb_data(s:cdb_get("/ieee802-dot1q-bridge:bridges/bridge[name='br0']/" ..
"component[name='angtel-component']/angtel-stp:spanning-tree/max-age"))
if max_age[1] < 2*(args["hello-time"] + 1) then
s:output("Wrong value! Bridge Max Age must be >= 2 * (Bridge Hello Time + 1 second)")
return
end
local p = {
operation = "replace",
target = "/ieee802-dot1q-bridge:bridges/bridge[name='br0']/" ..
"component[name='angtel-component']/" ..
"angtel-stp:spanning-tree/hello-time",
value = {
["hello-time"] = args["hello-time"]
}
}
s:cdb_edit_config(p)
end
},
["spanning-tree hold-count"] = {
description = "Configure the device STP hold count",
usage_info = "hold-count",
parameters = {
"hold-count\tSpecifies the bridge hold-count. Range: 0-10. Default is 6. "
},
args = {
{
type = "positional",
name = "hold-count",
vtype = "int",
nvalues = "1",
description = "Bridge hold-count",
required = true
}
},
handler = function(s, args)
local p = {
operation = "replace",
target = "/ieee802-dot1q-bridge:bridges/bridge[name='br0']/" ..
"component[name='angtel-component']/" ..
"angtel-stp:spanning-tree/hold-count",
value = {
["hold-count"] = args["hold-count"]
}
}
s:cdb_edit_config(p)
end
},
["no spanning-tree"] = {
description = "Disable spanning tree protocol.",
usage_info = "",
handler = function(s, args)
local p = {
operation = "replace",
target = "/ieee802-dot1q-bridge:bridges/bridge[name='br0']/" ..
"component[name='angtel-component']/" ..
"angtel-stp:spanning-tree/enable",
value = {
enable = false
}
}
s:cdb_edit_config(p)
end
},
["no spanning-tree forward-time"] = {
description = "Restore default configuration",
usage_info = "",
handler = function(s, args)
local p = {
operation = "delete",
target = "/ieee802-dot1q-bridge:bridges/bridge[name='br0']/" ..
"component[name='angtel-component']/" ..
"angtel-stp:spanning-tree/forwarding-delay",
}
s:cdb_edit_config(p)
end
},
["no spanning-tree max-age"] = {
description = "Restore default configuration",
usage_info = "",
handler = function(s, args)
local p = {
operation = "delete",
target = "/ieee802-dot1q-bridge:bridges/bridge[name='br0']/" ..
"component[name='angtel-component']/" ..
"angtel-stp:spanning-tree/max-age",
}
s:cdb_edit_config(p)
end
},
["no spanning-tree priority"] = {
description = "Restore default configuration",
usage_info = "",
handler = function(s, args)
local p = {
operation = "delete",
target = "/ieee802-dot1q-bridge:bridges/bridge[name='br0']/" ..
"component[name='angtel-component']/" ..
"angtel-stp:spanning-tree/bridge-priority",
}
s:cdb_edit_config(p)
end
},
["no spanning-tree hello-time"] = {
description = "Restore default configuration",
usage_info = "",
handler = function(s, args)
local p = {
operation = "delete",
target = "/ieee802-dot1q-bridge:bridges/bridge[name='br0']/" ..
"component[name='angtel-component']/" ..
"angtel-stp:spanning-tree/hello-time",
}
s:cdb_edit_config(p)
end
},
["no spanning-tree hold-count"] = {
description = "Restore default configuration",
usage_info = "",
handler = function(s, args)
local p = {
operation = "delete",
target = "/ieee802-dot1q-bridge:bridges/bridge[name='br0']/" ..
"component[name='angtel-component']/" ..
"angtel-stp:spanning-tree/hold-count",
}
s:cdb_edit_config(p)
end
}
}
Москва, 2019