diff --git a/share/snmp/mibs/FREEBSD-MIB.txt b/share/snmp/mibs/FREEBSD-MIB.txt index 0a745c3a3754..71cf67b23f78 100644 --- a/share/snmp/mibs/FREEBSD-MIB.txt +++ b/share/snmp/mibs/FREEBSD-MIB.txt @@ -1,97 +1,95 @@ -- ***************************************************************** -- This file is in the public domain. -- -- FreeBSD SMI { enterprises 2238 } -- --- $FreeBSD$ --- -- ***************************************************************** FREEBSD-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-IDENTITY, enterprises FROM SNMPv2-SMI; freeBSD MODULE-IDENTITY LAST-UPDATED "202009032030Z" ORGANIZATION "The FreeBSD Project." CONTACT-INFO "phk@FreeBSD.org is contact person for this file. core@FreeBSD.org is the final authority." DESCRIPTION "The Structure of Management Information for the FreeBSD Project enterprise MIB subtree." REVISION "202009031900Z" DESCRIPTION "Added entries for the otherName component of a X.509 cert" REVISION "200610310800Z" DESCRIPTION "Initial version of this MIB module." ::= { enterprises 2238 } -- assigned by IANA freeBSDsrc OBJECT-IDENTITY STATUS current DESCRIPTION "Subtree for things which lives in the src tree." ::= { freeBSD 1 } freeBSDsrcCertOtherName OBJECT-IDENTITY STATUS current DESCRIPTION "Subtree for X.509 Certificate otherName entries" ::= { freeBSDsrc 1 } -- -- For NFS over TLS, a user@domain can optionally be handled by rpc.tlsservd -- freeBSDsrcCertNFSuser OBJECT-IDENTITY STATUS current DESCRIPTION "Entry for X.509 Certificate for NFS user@domain name" ::= { freeBSDsrcCertOtherName 1 } freeBSDports OBJECT-IDENTITY STATUS current DESCRIPTION "Subtree for things which lives in the ports tree." ::= { freeBSD 2 } freeBSDpeople OBJECT-IDENTITY STATUS current DESCRIPTION "Subtree for FreeBSD people. Under this branch any FreeBSD committer may claim a subtree. Grab the next sequential oid in the list. These assignments are not revoked when committers leave the FreeBSD project. " ::= { freeBSD 3 } freeBSDpeoplePhk OBJECT-IDENTITY STATUS current DESCRIPTION "Subtree for phk@FreeBSD.org" ::= {freeBSDpeople 1} freeBSDVersion OBJECT-IDENTITY STATUS current DESCRIPTION "Subtree to register FreeBSD versions. The OID for a FreeBSD version is formed by appending the dot delimited numbers from the release number to this base OID. Examples: 5.2.1-STABLE: freeBSDVersion.5.2.1 6.1-STABLE: freeBSDVersion.6.1 7.0-CURRENT: freeBSDVersion.7.0 There is no indication whether this is STABLE or CURRENT. The sysObjectId is automatically set to the value indicated by the uname(3) release field by bsnmpd(1). This initial value can be overwritten in the configuration file." ::= { freeBSD 4 } END diff --git a/stand/lua/cli.lua b/stand/lua/cli.lua index 11f3b41a7fed..6832da0a31a5 100644 --- a/stand/lua/cli.lua +++ b/stand/lua/cli.lua @@ -1,266 +1,264 @@ -- -- SPDX-License-Identifier: BSD-2-Clause -- -- Copyright (c) 2018 Kyle Evans -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- local config = require("config") local core = require("core") local cli = {} if not pager then -- shim for the pager module that just doesn't do it. -- XXX Remove after 12.2 goes EoL. pager = { open = function() end, close = function() end, output = function(str) printc(str) end, } end -- Internal function -- Parses arguments to boot and returns two values: kernel_name, argstr -- Defaults to nil and "" respectively. -- This will also parse arguments to autoboot, but the with_kernel argument -- will need to be explicitly overwritten to false local function parseBootArgs(argv, with_kernel) if with_kernel == nil then with_kernel = true end if #argv == 0 then if with_kernel then return nil, "" else return "" end end local kernel_name local argstr = "" for _, v in ipairs(argv) do if with_kernel and v:sub(1,1) ~= "-" then kernel_name = v else argstr = argstr .. " " .. v end end if with_kernel then return kernel_name, argstr else return argstr end end local function setModule(module, loading) if loading and config.enableModule(module) then print(module .. " will be loaded") elseif not loading and config.disableModule(module) then print(module .. " will not be loaded") end end -- Declares a global function cli_execute that attempts to dispatch the -- arguments passed as a lua function. This gives lua a chance to intercept -- builtin CLI commands like "boot" -- This function intentionally does not follow our general naming guideline for -- functions. This is global pollution, but the clearly separated 'cli' looks -- more like a module indicator to serve as a hint of where to look for the -- corresponding definition. function cli_execute(...) local argv = {...} -- Just in case... if #argv == 0 then return loader.command(...) end local cmd_name = argv[1] local cmd = cli[cmd_name] if cmd ~= nil and type(cmd) == "function" then -- Pass argv wholesale into cmd. We could omit argv[0] since the -- traditional reasons for including it don't necessarily apply, -- it may not be totally redundant if we want to have one global -- handling multiple commands return cmd(...) else return loader.command(...) end end function cli_execute_unparsed(str) return cli_execute(loader.parse(str)) end -- Module exports function cli.boot(...) local _, argv = cli.arguments(...) local kernel, argstr = parseBootArgs(argv) if kernel ~= nil then loader.perform("unload") config.selectKernel(kernel) end core.boot(argstr) end function cli.autoboot(...) local _, argv = cli.arguments(...) local argstr = parseBootArgs(argv, false) core.autoboot(argstr) end cli['boot-conf'] = function(...) local _, argv = cli.arguments(...) local kernel, argstr = parseBootArgs(argv) if kernel ~= nil then loader.perform("unload") config.selectKernel(kernel) end core.autoboot(argstr) end cli['read-conf'] = function(...) local _, argv = cli.arguments(...) config.readConf(assert(core.popFrontTable(argv))) end cli['reload-conf'] = function() config.reload() end cli["enable-module"] = function(...) local _, argv = cli.arguments(...) if #argv == 0 then print("usage error: enable-module module") return end setModule(argv[1], true) end cli["disable-module"] = function(...) local _, argv = cli.arguments(...) if #argv == 0 then print("usage error: disable-module module") return end setModule(argv[1], false) end cli["toggle-module"] = function(...) local _, argv = cli.arguments(...) if #argv == 0 then print("usage error: toggle-module module") return end local module = argv[1] setModule(module, not config.isModuleEnabled(module)) end cli["show-module-options"] = function() local module_info = config.getModuleInfo() local modules = module_info['modules'] local blacklist = module_info['blacklist'] local lines = {} for module, info in pairs(modules) do if #lines > 0 then lines[#lines + 1] = "" end lines[#lines + 1] = "Name: " .. module if info.name then lines[#lines + 1] = "Path: " .. info.name end if info.type then lines[#lines + 1] = "Type: " .. info.type end if info.flags then lines[#lines + 1] = "Flags: " .. info.flags end if info.before then lines[#lines + 1] = "Before load: " .. info.before end if info.after then lines[#lines + 1] = "After load: " .. info.after end if info.error then lines[#lines + 1] = "Error: " .. info.error end local status if blacklist[module] and not info.force then status = "Blacklisted" elseif info.load == "YES" then status = "Load" else status = "Don't load" end lines[#lines + 1] = "Status: " .. status end pager.open() for _, v in ipairs(lines) do pager.output(v .. "\n") end pager.close() end cli["disable-device"] = function(...) local _, argv = cli.arguments(...) local d, u if #argv == 0 then print("usage error: disable-device device") return end d, u = string.match(argv[1], "(%w*%a)(%d+)") if d ~= nil then loader.setenv("hint." .. d .. "." .. u .. ".disabled", "1") end end -- Used for splitting cli varargs into cmd_name and the rest of argv function cli.arguments(...) local argv = {...} local cmd_name cmd_name, argv = core.popFrontTable(argv) return cmd_name, argv end return cli diff --git a/stand/lua/color.lua b/stand/lua/color.lua index 72024e241d10..bdb29e6de670 100644 --- a/stand/lua/color.lua +++ b/stand/lua/color.lua @@ -1,122 +1,120 @@ -- -- SPDX-License-Identifier: BSD-2-Clause -- -- Copyright (c) 2015 Pedro Souza -- All rights reserved. -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- local core = require("core") local hook = require("hook") local color = {} local function recalcDisabled() color.disabled = not color.isEnabled() end -- Module exports color.BLACK = 0 color.RED = 1 color.GREEN = 2 color.YELLOW = 3 color.BLUE = 4 color.MAGENTA = 5 color.CYAN = 6 color.WHITE = 7 color.DEFAULT = 9 color.BRIGHT = 1 color.DIM = 2 function color.isEnabled() local c = loader.getenv("loader_color") if c ~= nil then return c:lower() ~= "no" and c ~= "0" end return true end function color.escapefg(color_value) if color.disabled then return '' end return core.KEYSTR_CSI .. "3" .. color_value .. "m" end function color.resetfg() if color.disabled then return '' end return color.escapefg(color.DEFAULT) end function color.escapebg(color_value) if color.disabled then return '' end return core.KEYSTR_CSI .. "4" .. color_value .. "m" end function color.resetbg() if color.disabled then return '' end return color.escapebg(color.DEFAULT) end function color.escape(fg_color, bg_color, attribute) if color.disabled then return "" end if attribute == nil then attribute = "" else attribute = attribute .. ";" end return core.KEYSTR_CSI .. attribute .. "3" .. fg_color .. ";4" .. bg_color .. "m" end function color.default() if color.disabled then return "" end return color.escape(color.DEFAULT, color.DEFAULT) end function color.highlight(str) if color.disabled then return str end -- We need to reset attributes as well as color scheme here, just in -- case the terminal defaults don't match what we're expecting. return core.KEYSTR_CSI .. "1m" .. str .. core.KEYSTR_CSI .. "22m" end recalcDisabled() hook.register("config.loaded", recalcDisabled) return color diff --git a/stand/lua/config.lua b/stand/lua/config.lua index fe45664d66d1..3f8fbc52cb40 100644 --- a/stand/lua/config.lua +++ b/stand/lua/config.lua @@ -1,882 +1,880 @@ -- -- SPDX-License-Identifier: BSD-2-Clause -- -- Copyright (c) 2015 Pedro Souza -- Copyright (c) 2018 Kyle Evans -- All rights reserved. -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- local hook = require("hook") local config = {} local modules = {} local carousel_choices = {} -- Which variables we changed local env_changed = {} -- Values to restore env to (nil to unset) local env_restore = {} local MSG_FAILDIR = "Failed to load conf dir '%s': not a directory" local MSG_FAILEXEC = "Failed to exec '%s'" local MSG_FAILSETENV = "Failed to '%s' with value: %s" local MSG_FAILOPENCFG = "Failed to open config: '%s'" local MSG_FAILREADCFG = "Failed to read config: '%s'" local MSG_FAILPARSECFG = "Failed to parse config: '%s'" local MSG_FAILEXECLUA = "Failed to execute lua conf '%s': '%s'" local MSG_FAILPARSEVAR = "Failed to parse variable '%s': %s" local MSG_FAILEXBEF = "Failed to execute '%s' before loading '%s'" local MSG_FAILEXAF = "Failed to execute '%s' after loading '%s'" local MSG_MALFORMED = "Malformed line (%d):\n\t'%s'" local MSG_DEFAULTKERNFAIL = "No kernel set, failed to load from module_path" local MSG_KERNFAIL = "Failed to load kernel '%s'" local MSG_XENKERNFAIL = "Failed to load Xen kernel '%s'" local MSG_XENKERNLOADING = "Loading Xen kernel..." local MSG_KERNLOADING = "Loading kernel..." local MSG_MODLOADING = "Loading configured modules..." local MSG_MODBLACKLIST = "Not loading blacklisted module '%s'" local MSG_FAILSYN_QUOTE = "Stray quote at position '%d'" local MSG_FAILSYN_EOLESC = "Stray escape at end of line" local MSG_FAILSYN_EOLVAR = "Unescaped $ at end of line" local MSG_FAILSYN_BADVAR = "Malformed variable expression at position '%d'" local MODULEEXPR = '([-%w_]+)' local QVALEXPR = '"(.*)"' local QVALREPL = QVALEXPR:gsub('%%', '%%%%') local WORDEXPR = "([-%w%d][-%w%d_.]*)" local WORDREPL = WORDEXPR:gsub('%%', '%%%%') -- Entries that should never make it into the environment; each one should have -- a documented reason for its existence, and these should all be implementation -- details of the config module. local loader_env_restricted_table = { -- loader_conf_files should be considered write-only, and consumers -- should not rely on any particular value; it's a loader implementation -- detail. Moreover, it's not a particularly useful variable to have in -- the kenv. Save the overhead, let it get fetched other ways. loader_conf_files = true, } local function restoreEnv() -- Examine changed environment variables for k, v in pairs(env_changed) do local restore_value = env_restore[k] if restore_value == nil then -- This one doesn't need restored for some reason goto continue end local current_value = loader.getenv(k) if current_value ~= v then -- This was overwritten by some action taken on the menu -- most likely; we'll leave it be. goto continue end restore_value = restore_value.value if restore_value ~= nil then loader.setenv(k, restore_value) else loader.unsetenv(k) end ::continue:: end env_changed = {} env_restore = {} end -- XXX This getEnv/setEnv should likely be exported at some point. We can save -- the call back into loader.getenv for any variable that's been set or -- overridden by any loader.conf using this implementation with little overhead -- since we're already tracking the values. local function getEnv(key) if loader_env_restricted_table[key] ~= nil or env_changed[key] ~= nil then return env_changed[key] end return loader.getenv(key) end local function setEnv(key, value) env_changed[key] = value if loader_env_restricted_table[key] ~= nil then return 0 end -- Track the original value for this if we haven't already if env_restore[key] == nil then env_restore[key] = {value = loader.getenv(key)} end return loader.setenv(key, value) end -- name here is one of 'name', 'type', flags', 'before', 'after', or 'error.' -- These are set from lines in loader.conf(5): ${key}_${name}="${value}" where -- ${key} is a module name. local function setKey(key, name, value) if modules[key] == nil then modules[key] = {} end modules[key][name] = value end -- Escapes the named value for use as a literal in a replacement pattern. -- e.g. dhcp.host-name gets turned into dhcp%.host%-name to remove the special -- meaning. local function escapeName(name) return name:gsub("([%p])", "%%%1") end local function processEnvVar(value) local pval, vlen = '', #value local nextpos, vdelim, vinit = 1 local vpat for i = 1, vlen do if i < nextpos then goto nextc end local c = value:sub(i, i) if c == '\\' then if i == vlen then return nil, MSG_FAILSYN_EOLESC end nextpos = i + 2 pval = pval .. value:sub(i + 1, i + 1) elseif c == '"' then return nil, MSG_FAILSYN_QUOTE:format(i) elseif c == "$" then if i == vlen then return nil, MSG_FAILSYN_EOLVAR else if value:sub(i + 1, i + 1) == "{" then -- Skip ${ vinit = i + 2 vdelim = '}' vpat = "^([^}]+)}" else -- Skip the $ vinit = i + 1 vdelim = nil vpat = "^([%w][-%w%d_.]*)" end local name = value:match(vpat, vinit) if not name then return nil, MSG_FAILSYN_BADVAR:format(i) else nextpos = vinit + #name if vdelim then nextpos = nextpos + 1 end local repl = loader.getenv(name) or "" pval = pval .. repl end end else pval = pval .. c end ::nextc:: end return pval end local function checkPattern(line, pattern) local function _realCheck(_line, _pattern) return _line:match(_pattern) end if pattern:find('$VALUE') then local k, v, c k, v, c = _realCheck(line, pattern:gsub('$VALUE', QVALREPL)) if k ~= nil then return k,v, c end return _realCheck(line, pattern:gsub('$VALUE', WORDREPL)) else return _realCheck(line, pattern) end end -- str in this table is a regex pattern. It will automatically be anchored to -- the beginning of a line and any preceding whitespace will be skipped. The -- pattern should have no more than two captures patterns, which correspond to -- the two parameters (usually 'key' and 'value') that are passed to the -- process function. All trailing characters will be validated. Any $VALUE -- token included in a pattern will be tried first with a quoted value capture -- group, then a single-word value capture group. This is our kludge for Lua -- regex not supporting branching. -- -- We have two special entries in this table: the first is the first entry, -- a full-line comment. The second is for 'exec' handling. Both have a single -- capture group, but the difference is that the full-line comment pattern will -- match the entire line. This does not run afoul of the later end of line -- validation that we'll do after a match. However, the 'exec' pattern will. -- We document the exceptions with a special 'groups' index that indicates -- the number of capture groups, if not two. We'll use this later to do -- validation on the proper entry. -- local pattern_table = { { luaexempt = true, str = "(#.*)", process = function(_, _) end, groups = 1, }, -- module_load="value" { name = MODULEEXPR .. "_load%s*", val = "%s*$VALUE", process = function(k, v) if modules[k] == nil then modules[k] = {} end modules[k].load = v:upper() setEnv(k .. "_load", v:upper()) end, }, -- module_name="value" { name = MODULEEXPR .. "_name%s*", val = "%s*$VALUE", process = function(k, v) setKey(k, "name", v) setEnv(k .. "_name", v) end, }, -- module_type="value" { name = MODULEEXPR .. "_type%s*", val = "%s*$VALUE", process = function(k, v) setKey(k, "type", v) setEnv(k .. "_type", v) end, }, -- module_flags="value" { name = MODULEEXPR .. "_flags%s*", val = "%s*$VALUE", process = function(k, v) setKey(k, "flags", v) setEnv(k .. "_flags", v) end, }, -- module_before="value" { name = MODULEEXPR .. "_before%s*", val = "%s*$VALUE", process = function(k, v) setKey(k, "before", v) setEnv(k .. "_before", v) end, }, -- module_after="value" { name = MODULEEXPR .. "_after%s*", val = "%s*$VALUE", process = function(k, v) setKey(k, "after", v) setEnv(k .. "_after", v) end, }, -- module_error="value" { name = MODULEEXPR .. "_error%s*", val = "%s*$VALUE", process = function(k, v) setKey(k, "error", v) setEnv(k .. "_error", v) end, }, -- exec="command" { luaexempt = true, name = "exec%s*", val = "%s*" .. QVALEXPR, process = function(k, _) if cli_execute_unparsed(k) ~= 0 then print(MSG_FAILEXEC:format(k)) end end, groups = 1, }, -- env_var="value" or env_var=[word|num] { name = "([%w][%w%d-_.]*)%s*", val = "%s*$VALUE", process = function(k, v) local pv, msg = processEnvVar(v) if not pv then print(MSG_FAILPARSEVAR:format(k, msg)) return end if setEnv(k, pv) ~= 0 then print(MSG_FAILSETENV:format(k, v)) else return pv end end, }, } local function isValidComment(line) if line ~= nil then local s = line:match("^%s*#.*") if s == nil then s = line:match("^%s*$") end if s == nil then return false end end return true end local function getBlacklist() local blacklist = {} local blacklist_str = loader.getenv('module_blacklist') if blacklist_str == nil then return blacklist end for mod in blacklist_str:gmatch("[;, ]?([-%w_]+)[;, ]?") do blacklist[mod] = true end return blacklist end local function loadModule(mod, silent) local status = true local blacklist = getBlacklist() local pstatus for k, v in pairs(mod) do if v.load ~= nil and v.load:lower() == "yes" then local module_name = v.name or k if not v.force and blacklist[module_name] ~= nil then if not silent then print(MSG_MODBLACKLIST:format(module_name)) end goto continue end if not silent then loader.printc(module_name .. "...") end local str = "load " if v.type ~= nil then str = str .. "-t " .. v.type .. " " end str = str .. module_name if v.flags ~= nil then str = str .. " " .. v.flags end if v.before ~= nil then pstatus = cli_execute_unparsed(v.before) == 0 if not pstatus and not silent then print(MSG_FAILEXBEF:format(v.before, k)) end status = status and pstatus end if cli_execute_unparsed(str) ~= 0 then -- XXX Temporary shim: don't break the boot if -- loader hadn't been recompiled with this -- function exposed. if loader.command_error then print(loader.command_error()) end if not silent then print("failed!") end if v.error ~= nil then cli_execute_unparsed(v.error) end status = false elseif v.after ~= nil then pstatus = cli_execute_unparsed(v.after) == 0 if not pstatus and not silent then print(MSG_FAILEXAF:format(v.after, k)) end if not silent then print("ok") end status = status and pstatus end end ::continue:: end return status end local function readFile(name, silent) local f = io.open(name) if f == nil then if not silent then print(MSG_FAILOPENCFG:format(name)) end return nil end local text, _ = io.read(f) -- We might have read in the whole file, this won't be needed any more. io.close(f) if text == nil and not silent then print(MSG_FAILREADCFG:format(name)) end return text end local function checkNextboot() local nextboot_file = loader.getenv("nextboot_conf") local nextboot_enable = loader.getenv("nextboot_enable") if nextboot_file == nil then return end -- is nextboot_enable set in nvstore? if nextboot_enable == "NO" then return end local text = readFile(nextboot_file, true) if text == nil then return end if nextboot_enable == nil and text:match("^nextboot_enable=\"NO\"") ~= nil then -- We're done; nextboot is not enabled return end if not config.parse(text) then print(MSG_FAILPARSECFG:format(nextboot_file)) end -- Attempt to rewrite the first line and only the first line of the -- nextboot_file. We overwrite it with nextboot_enable="NO", then -- check for that on load. -- It's worth noting that this won't work on every filesystem, so we -- won't do anything notable if we have any errors in this process. local nfile = io.open(nextboot_file, 'w') if nfile ~= nil then -- We need the trailing space here to account for the extra -- character taken up by the string nextboot_enable="YES" -- Or new end quotation mark lands on the S, and we want to -- rewrite the entirety of the first line. io.write(nfile, "nextboot_enable=\"NO\" ") io.close(nfile) end loader.setenv("nextboot_enable", "NO") end local function processEnv(k, v) for _, val in ipairs(pattern_table) do if not val.luaexempt and val.name then local matched = k:match(val.name) if matched then return val.process(matched, v) end end end end -- Module exports config.verbose = false -- The first item in every carousel is always the default item. function config.getCarouselIndex(id) return carousel_choices[id] or 1 end function config.setCarouselIndex(id, idx) carousel_choices[id] = idx end -- Returns true if we processed the file successfully, false if we did not. -- If 'silent' is true, being unable to read the file is not considered a -- failure. function config.processFile(name, silent) if silent == nil then silent = false end local text = readFile(name, silent) if text == nil then return silent end if name:match(".lua$") then local cfg_env = setmetatable({}, { indices = {}, __index = function(env, key) if getmetatable(env).indices[key] then return rawget(env, key) end return loader.getenv(key) end, __newindex = function(env, key, val) getmetatable(env).indices[key] = true rawset(env, key, val) end, }) -- Give local modules a chance to populate the config -- environment. hook.runAll("config.buildenv", cfg_env) local res, err = pcall(load(text, name, "t", cfg_env)) if res then for k, v in pairs(cfg_env) do local t = type(v) if t ~= "function" and t ~= "table" then if t ~= "string" then v = tostring(v) end local pval = processEnv(k, v) if pval then setEnv(k, pval) end end end else print(MSG_FAILEXECLUA:format(name, err)) end return res else return config.parse(text) end end -- silent runs will not return false if we fail to open the file function config.parse(text) local n = 1 local status = true for line in text:gmatch("([^\n]+)") do if line:match("^%s*$") == nil then for _, val in ipairs(pattern_table) do if val.str == nil then val.str = val.name .. "=" .. val.val end local pattern = '^%s*' .. val.str .. '%s*(.*)'; local cgroups = val.groups or 2 local k, v, c = checkPattern(line, pattern) if k ~= nil then -- Offset by one, drats if cgroups == 1 then c = v v = nil end if isValidComment(c) then val.process(k, v) goto nextline end break end end print(MSG_MALFORMED:format(n, line)) status = false end ::nextline:: n = n + 1 end return status end function config.readConf(file, loaded_files) if loaded_files == nil then loaded_files = {} end if loaded_files[file] ~= nil then return end -- We'll process loader_conf_dirs at the top-level readConf local load_conf_dirs = next(loaded_files) == nil print("Loading " .. file) -- The final value of loader_conf_files is not important, so just -- clobber it here. We'll later check if it's no longer nil and process -- the new value for files to read. setEnv("loader_conf_files", nil) -- These may or may not exist, and that's ok. Do a -- silent parse so that we complain on parse errors but -- not for them simply not existing. if not config.processFile(file, true) then print(MSG_FAILPARSECFG:format(file)) end loaded_files[file] = true -- Going to process "loader_conf_files" extra-files local loader_conf_files = getEnv("loader_conf_files") if loader_conf_files ~= nil then for name in loader_conf_files:gmatch("[%w%p]+") do config.readConf(name, loaded_files) end end if load_conf_dirs then local loader_conf_dirs = getEnv("loader_conf_dirs") if loader_conf_dirs ~= nil then for name in loader_conf_dirs:gmatch("[%w%p]+") do if lfs.attributes(name, "mode") ~= "directory" then print(MSG_FAILDIR:format(name)) goto nextdir end for cfile in lfs.dir(name) do if cfile:match(".conf$") then local fpath = name .. "/" .. cfile if lfs.attributes(fpath, "mode") == "file" then config.readConf(fpath, loaded_files) end end end ::nextdir:: end end end end -- other_kernel is optionally the name of a kernel to load, if not the default -- or autoloaded default from the module_path function config.loadKernel(other_kernel) local flags = loader.getenv("kernel_options") or "" local kernel = other_kernel or loader.getenv("kernel") local function tryLoad(names) for name in names:gmatch("([^;]+)%s*;?") do local r = loader.perform("load " .. name .. " " .. flags) if r == 0 then return name end end return nil end local function getModulePath() local module_path = loader.getenv("module_path") local kernel_path = loader.getenv("kernel_path") if kernel_path == nil then return module_path end -- Strip the loaded kernel path from module_path. This currently assumes -- that the kernel path will be prepended to the module_path when it's -- found. kernel_path = escapeName(kernel_path .. ';') return module_path:gsub(kernel_path, '') end local function loadBootfile() local bootfile = loader.getenv("bootfile") -- append default kernel name if bootfile == nil then bootfile = "kernel" else bootfile = bootfile .. ";kernel" end return tryLoad(bootfile) end -- kernel not set, try load from default module_path if kernel == nil then local res = loadBootfile() if res ~= nil then -- Default kernel is loaded config.kernel_loaded = nil return true else print(MSG_DEFAULTKERNFAIL) return false end else -- Use our cached module_path, so we don't end up with multiple -- automatically added kernel paths to our final module_path local module_path = getModulePath() local res if other_kernel ~= nil then kernel = other_kernel end -- first try load kernel with module_path = /boot/${kernel} -- then try load with module_path=${kernel} local paths = {"/boot/" .. kernel, kernel} for _, v in pairs(paths) do loader.setenv("module_path", v) res = loadBootfile() -- succeeded, add path to module_path if res ~= nil then config.kernel_loaded = kernel if module_path ~= nil then loader.setenv("module_path", v .. ";" .. module_path) loader.setenv("kernel_path", v) end return true end end -- failed to load with ${kernel} as a directory -- try as a file res = tryLoad(kernel) if res ~= nil then config.kernel_loaded = kernel return true else print(MSG_KERNFAIL:format(kernel)) return false end end end function config.selectKernel(kernel) config.kernel_selected = kernel end function config.load(file, reloading) if not file then file = "/boot/defaults/loader.conf" end config.readConf(file) checkNextboot() local verbose = loader.getenv("verbose_loading") or "no" config.verbose = verbose:lower() == "yes" if not reloading then hook.runAll("config.loaded") end end -- Reload configuration function config.reload(file) modules = {} restoreEnv() config.load(file, true) hook.runAll("config.reloaded") end function config.loadelf() local xen_kernel = loader.getenv('xen_kernel') local kernel = config.kernel_selected or config.kernel_loaded local status if xen_kernel ~= nil then print(MSG_XENKERNLOADING) if cli_execute_unparsed('load ' .. xen_kernel) ~= 0 then print(MSG_XENKERNFAIL:format(xen_kernel)) return false end end print(MSG_KERNLOADING) if not config.loadKernel(kernel) then return false end hook.runAll("kernel.loaded") print(MSG_MODLOADING) status = loadModule(modules, not config.verbose) hook.runAll("modules.loaded") return status end function config.enableModule(modname) if modules[modname] == nil then modules[modname] = {} elseif modules[modname].load == "YES" then modules[modname].force = true return true end modules[modname].load = "YES" modules[modname].force = true return true end function config.disableModule(modname) if modules[modname] == nil then return false elseif modules[modname].load ~= "YES" then return true end modules[modname].load = "NO" modules[modname].force = nil return true end function config.isModuleEnabled(modname) local mod = modules[modname] if not mod or mod.load ~= "YES" then return false end if mod.force then return true end local blacklist = getBlacklist() return not blacklist[modname] end function config.getModuleInfo() return { modules = modules, blacklist = getBlacklist() } end hook.registerType("config.buildenv") hook.registerType("config.loaded") hook.registerType("config.reloaded") hook.registerType("kernel.loaded") hook.registerType("modules.loaded") return config diff --git a/stand/lua/core.lua b/stand/lua/core.lua index 83a522febffe..8a481ee0b782 100644 --- a/stand/lua/core.lua +++ b/stand/lua/core.lua @@ -1,527 +1,525 @@ -- -- SPDX-License-Identifier: BSD-2-Clause -- -- Copyright (c) 2015 Pedro Souza -- Copyright (c) 2018 Kyle Evans -- All rights reserved. -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- local config = require("config") local hook = require("hook") local core = {} local default_safe_mode = false local default_single_user = false local default_verbose = false local bootenv_list = "bootenvs" local function composeLoaderCmd(cmd_name, argstr) if argstr ~= nil then cmd_name = cmd_name .. " " .. argstr end return cmd_name end local function recordDefaults() -- On i386, hint.acpi.0.rsdp will be set before we're loaded. On !i386, -- it will generally be set upon execution of the kernel. Because of -- this, we can't (or don't really want to) detect/disable ACPI on !i386 -- reliably. Just set it enabled if we detect it and leave well enough -- alone if we don't. local boot_acpi = core.isSystem386() and core.getACPIPresent(false) local boot_single = loader.getenv("boot_single") or "no" local boot_verbose = loader.getenv("boot_verbose") or "no" default_single_user = boot_single:lower() ~= "no" default_verbose = boot_verbose:lower() ~= "no" if boot_acpi then core.setACPI(true) end core.setSingleUser(default_single_user) core.setVerbose(default_verbose) end -- Globals -- try_include will return the loaded module on success, or false and the error -- message on failure. function try_include(module) if module:sub(1, 1) ~= "/" then local lua_path = loader.lua_path -- XXX Temporary compat shim; this should be removed once the -- loader.lua_path export has sufficiently spread. if lua_path == nil then lua_path = "/boot/lua" end module = lua_path .. "/" .. module -- We only attempt to append an extension if an absolute path -- wasn't specified. This assumes that the caller either wants -- to treat this like it would require() and specify just the -- base filename, or they know what they're doing as they've -- specified an absolute path and we shouldn't impede. if module:match(".lua$") == nil then module = module .. ".lua" end end if lfs.attributes(module, "mode") ~= "file" then return end return dofile(module) end -- Module exports -- Commonly appearing constants core.KEY_BACKSPACE = 8 core.KEY_ENTER = 13 core.KEY_DELETE = 127 -- Note that this is a decimal representation, despite the leading 0 that in -- other contexts (outside of Lua) may mean 'octal' core.KEYSTR_ESCAPE = "\027" core.KEYSTR_CSI = core.KEYSTR_ESCAPE .. "[" core.KEYSTR_RESET = core.KEYSTR_ESCAPE .. "c" core.MENU_RETURN = "return" core.MENU_ENTRY = "entry" core.MENU_SEPARATOR = "separator" core.MENU_SUBMENU = "submenu" core.MENU_CAROUSEL_ENTRY = "carousel_entry" function core.setVerbose(verbose) if verbose == nil then verbose = not core.verbose end if verbose then loader.setenv("boot_verbose", "YES") else loader.unsetenv("boot_verbose") end core.verbose = verbose end function core.setSingleUser(single_user) if single_user == nil then single_user = not core.su end if single_user then loader.setenv("boot_single", "YES") else loader.unsetenv("boot_single") end core.su = single_user end function core.getACPIPresent(checking_system_defaults) local c = loader.getenv("hint.acpi.0.rsdp") if c ~= nil then if checking_system_defaults then return true end -- Otherwise, respect disabled if it's set c = loader.getenv("hint.acpi.0.disabled") return c == nil or tonumber(c) ~= 1 end return false end function core.setACPI(acpi) if acpi == nil then acpi = not core.acpi end if acpi then loader.setenv("acpi_load", "YES") loader.setenv("hint.acpi.0.disabled", "0") loader.unsetenv("loader.acpi_disabled_by_user") else loader.unsetenv("acpi_load") loader.setenv("hint.acpi.0.disabled", "1") loader.setenv("loader.acpi_disabled_by_user", "1") end core.acpi = acpi end function core.setSafeMode(safe_mode) if safe_mode == nil then safe_mode = not core.sm end if safe_mode then loader.setenv("kern.smp.disabled", "1") loader.setenv("hw.ata.ata_dma", "0") loader.setenv("hw.ata.atapi_dma", "0") loader.setenv("hw.ata.wc", "0") loader.setenv("hw.eisa_slots", "0") loader.setenv("kern.eventtimer.periodic", "1") loader.setenv("kern.geom.part.check_integrity", "0") else loader.unsetenv("kern.smp.disabled") loader.unsetenv("hw.ata.ata_dma") loader.unsetenv("hw.ata.atapi_dma") loader.unsetenv("hw.ata.wc") loader.unsetenv("hw.eisa_slots") loader.unsetenv("kern.eventtimer.periodic") loader.unsetenv("kern.geom.part.check_integrity") end core.sm = safe_mode end function core.clearCachedKernels() -- Clear the kernel cache on config changes, autodetect might have -- changed or if we've switched boot environments then we could have -- a new kernel set. core.cached_kernels = nil end function core.kernelList() if core.cached_kernels ~= nil then return core.cached_kernels end local k = loader.getenv("kernel") local v = loader.getenv("kernels") local autodetect = loader.getenv("kernels_autodetect") or "" local kernels = {} local unique = {} local i = 0 if k ~= nil then i = i + 1 kernels[i] = k unique[k] = true end if v ~= nil then for n in v:gmatch("([^;, ]+)[;, ]?") do if unique[n] == nil then i = i + 1 kernels[i] = n unique[n] = true end end end -- Do not attempt to autodetect if underlying filesystem -- do not support directory listing (e.g. tftp, http) if not lfs.attributes("/boot", "mode") then autodetect = "no" loader.setenv("kernels_autodetect", "NO") end -- Base whether we autodetect kernels or not on a loader.conf(5) -- setting, kernels_autodetect. If it's set to 'yes', we'll add -- any kernels we detect based on the criteria described. if autodetect:lower() ~= "yes" then core.cached_kernels = kernels return core.cached_kernels end -- Automatically detect other bootable kernel directories using a -- heuristic. Any directory in /boot that contains an ordinary file -- named "kernel" is considered eligible. for file, ftype in lfs.dir("/boot") do local fname = "/boot/" .. file if file == "." or file == ".." then goto continue end if ftype then if ftype ~= lfs.DT_DIR then goto continue end elseif lfs.attributes(fname, "mode") ~= "directory" then goto continue end if lfs.attributes(fname .. "/kernel", "mode") ~= "file" then goto continue end if unique[file] == nil then i = i + 1 kernels[i] = file unique[file] = true end ::continue:: end core.cached_kernels = kernels return core.cached_kernels end function core.bootenvDefault() return loader.getenv("zfs_be_active") end function core.bootenvList() local bootenv_count = tonumber(loader.getenv(bootenv_list .. "_count")) local bootenvs = {} local curenv local envcount = 0 local unique = {} if bootenv_count == nil or bootenv_count <= 0 then return bootenvs end -- Currently selected bootenv is always first/default -- On the rewinded list the bootenv may not exists if core.isRewinded() then curenv = core.bootenvDefaultRewinded() else curenv = core.bootenvDefault() end if curenv ~= nil then envcount = envcount + 1 bootenvs[envcount] = curenv unique[curenv] = true end for curenv_idx = 0, bootenv_count - 1 do curenv = loader.getenv(bootenv_list .. "[" .. curenv_idx .. "]") if curenv ~= nil and unique[curenv] == nil then envcount = envcount + 1 bootenvs[envcount] = curenv unique[curenv] = true end end return bootenvs end function core.isCheckpointed() return loader.getenv("zpool_checkpoint") ~= nil end function core.bootenvDefaultRewinded() local defname = "zfs:!" .. string.sub(core.bootenvDefault(), 5) local bootenv_count = tonumber("bootenvs_check_count") if bootenv_count == nil or bootenv_count <= 0 then return defname end for curenv_idx = 0, bootenv_count - 1 do local curenv = loader.getenv("bootenvs_check[" .. curenv_idx .. "]") if curenv == defname then return defname end end return loader.getenv("bootenvs_check[0]") end function core.isRewinded() return bootenv_list == "bootenvs_check" end function core.changeRewindCheckpoint() if core.isRewinded() then bootenv_list = "bootenvs" else bootenv_list = "bootenvs_check" end end function core.loadEntropy() if core.isUEFIBoot() then if (loader.getenv("entropy_efi_seed") or "no"):lower() == "yes" then loader.perform("efi-seed-entropy") end end end function core.setDefaults() core.setACPI(core.getACPIPresent(true)) core.setSafeMode(default_safe_mode) core.setSingleUser(default_single_user) core.setVerbose(default_verbose) end function core.autoboot(argstr) -- loadelf() only if we've not already loaded a kernel if loader.getenv("kernelname") == nil then config.loadelf() end core.loadEntropy() loader.perform(composeLoaderCmd("autoboot", argstr)) end function core.boot(argstr) -- loadelf() only if we've not already loaded a kernel if loader.getenv("kernelname") == nil then config.loadelf() end core.loadEntropy() loader.perform(composeLoaderCmd("boot", argstr)) end function core.isSingleUserBoot() local single_user = loader.getenv("boot_single") return single_user ~= nil and single_user:lower() == "yes" end function core.isUEFIBoot() local efiver = loader.getenv("efi-version") return efiver ~= nil end function core.isZFSBoot() local c = loader.getenv("currdev") if c ~= nil then return c:match("^zfs:") ~= nil end return false end function core.isFramebufferConsole() local c = loader.getenv("console") if c ~= nil then if c:find("efi") == nil and c:find("vidconsole") == nil then return false end if loader.getenv("screen.depth") ~= nil then return true end end return false end function core.isSerialConsole() local c = loader.getenv("console") if c ~= nil then -- serial console is comconsole, but also userboot. -- userboot is there, because we have no way to know -- if the user terminal can draw unicode box chars or not. if c:find("comconsole") ~= nil or c:find("userboot") ~= nil then return true end end return false end function core.isSerialBoot() local s = loader.getenv("boot_serial") if s ~= nil then return true end local m = loader.getenv("boot_multicons") if m ~= nil then return true end return false end function core.isSystem386() return loader.machine_arch == "i386" end -- Is the menu skipped in the environment in which we've booted? function core.isMenuSkipped() return string.lower(loader.getenv("beastie_disable") or "") == "yes" end -- This may be a better candidate for a 'utility' module. function core.deepCopyTable(tbl) local new_tbl = {} for k, v in pairs(tbl) do if type(v) == "table" then new_tbl[k] = core.deepCopyTable(v) else new_tbl[k] = v end end return new_tbl end -- XXX This should go away if we get the table lib into shape for importing. -- As of now, it requires some 'os' functions, so we'll implement this in lua -- for our uses function core.popFrontTable(tbl) -- Shouldn't reasonably happen if #tbl == 0 then return nil, nil elseif #tbl == 1 then return tbl[1], {} end local first_value = tbl[1] local new_tbl = {} -- This is not a cheap operation for k, v in ipairs(tbl) do if k > 1 then new_tbl[k - 1] = v end end return first_value, new_tbl end function core.getConsoleName() if loader.getenv("boot_multicons") ~= nil then if loader.getenv("boot_serial") ~= nil then return "Dual (Serial primary)" else return "Dual (Video primary)" end else if loader.getenv("boot_serial") ~= nil then return "Serial" else return "Video" end end end function core.nextConsoleChoice() if loader.getenv("boot_multicons") ~= nil then if loader.getenv("boot_serial") ~= nil then loader.unsetenv("boot_serial") else loader.unsetenv("boot_multicons") loader.setenv("boot_serial", "YES") end else if loader.getenv("boot_serial") ~= nil then loader.unsetenv("boot_serial") else loader.setenv("boot_multicons", "YES") loader.setenv("boot_serial", "YES") end end end recordDefaults() hook.register("config.reloaded", core.clearCachedKernels) return core diff --git a/stand/lua/drawer.lua b/stand/lua/drawer.lua index 24f2f0ddb3b3..2dcf7d5de0f8 100644 --- a/stand/lua/drawer.lua +++ b/stand/lua/drawer.lua @@ -1,525 +1,523 @@ -- -- SPDX-License-Identifier: BSD-2-Clause -- -- Copyright (c) 2015 Pedro Souza -- Copyright (c) 2018 Kyle Evans -- All rights reserved. -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- local color = require("color") local config = require("config") local core = require("core") local screen = require("screen") local drawer = {} local fbsd_brand local none local menu_name_handlers local branddefs local logodefs local brand_position local logo_position local menu_position local frame_size local default_shift local shift local function menuEntryName(drawing_menu, entry) local name_handler = menu_name_handlers[entry.entry_type] if name_handler ~= nil then return name_handler(drawing_menu, entry) end if type(entry.name) == "function" then return entry.name() end return entry.name end local function processFile(gfxname) if gfxname == nil then return false, "Missing filename" end local ret = try_include('gfx-' .. gfxname) if ret == nil then return false, "Failed to include gfx-" .. gfxname end -- Legacy format if type(ret) ~= "table" then return true end for gfxtype, def in pairs(ret) do if gfxtype == "brand" then drawer.addBrand(gfxname, def) elseif gfxtype == "logo" then drawer.addLogo(gfxname, def) else return false, "Unknown graphics type '" .. gfxtype .. "'" end end return true end local function getBranddef(brand) if brand == nil then return nil end -- Look it up local branddef = branddefs[brand] -- Try to pull it in if branddef == nil then local res, err = processFile(brand) if not res then -- This fallback should go away after FreeBSD 13. try_include('brand-' .. brand) -- If the fallback also failed, print whatever error -- we encountered in the original processing. if branddefs[brand] == nil then print(err) return nil end end branddef = branddefs[brand] end return branddef end local function getLogodef(logo) if logo == nil then return nil end -- Look it up local logodef = logodefs[logo] -- Try to pull it in if logodef == nil then local res, err = processFile(logo) if not res then -- This fallback should go away after FreeBSD 13. try_include('logo-' .. logo) -- If the fallback also failed, print whatever error -- we encountered in the original processing. if logodefs[logo] == nil then print(err) return nil end end logodef = logodefs[logo] end return logodef end local function draw(x, y, logo) for i = 1, #logo do screen.setcursor(x, y + i - 1) printc(logo[i]) end end local function drawmenu(menudef) local x = menu_position.x local y = menu_position.y x = x + shift.x y = y + shift.y -- print the menu and build the alias table local alias_table = {} local entry_num = 0 local menu_entries = menudef.entries local effective_line_num = 0 if type(menu_entries) == "function" then menu_entries = menu_entries() end for _, e in ipairs(menu_entries) do -- Allow menu items to be conditionally visible by specifying -- a visible function. if e.visible ~= nil and not e.visible() then goto continue end effective_line_num = effective_line_num + 1 if e.entry_type ~= core.MENU_SEPARATOR then entry_num = entry_num + 1 screen.setcursor(x, y + effective_line_num) printc(entry_num .. ". " .. menuEntryName(menudef, e)) -- fill the alias table alias_table[tostring(entry_num)] = e if e.alias ~= nil then for _, a in ipairs(e.alias) do alias_table[a] = e end end else screen.setcursor(x, y + effective_line_num) printc(menuEntryName(menudef, e)) end ::continue:: end return alias_table end local function defaultframe() if core.isSerialConsole() then return "ascii" end return "double" end local function drawframe() local x = menu_position.x - 3 local y = menu_position.y - 1 local w = frame_size.w local h = frame_size.h local framestyle = loader.getenv("loader_menu_frame") or defaultframe() local framespec = drawer.frame_styles[framestyle] -- If we don't have a framespec for the current frame style, just don't -- draw a box. if framespec == nil then return false end local hl = framespec.horizontal local vl = framespec.vertical local tl = framespec.top_left local bl = framespec.bottom_left local tr = framespec.top_right local br = framespec.bottom_right x = x + shift.x y = y + shift.y if core.isFramebufferConsole() and loader.term_drawrect ~= nil then loader.term_drawrect(x, y, x + w, y + h) return true end screen.setcursor(x, y); printc(tl) screen.setcursor(x, y + h); printc(bl) screen.setcursor(x + w, y); printc(tr) screen.setcursor(x + w, y + h); printc(br) screen.setcursor(x + 1, y) for _ = 1, w - 1 do printc(hl) end screen.setcursor(x + 1, y + h) for _ = 1, w - 1 do printc(hl) end for i = 1, h - 1 do screen.setcursor(x, y + i) printc(vl) screen.setcursor(x + w, y + i) printc(vl) end return true end local function drawbox() local x = menu_position.x - 3 local y = menu_position.y - 1 local w = frame_size.w local menu_header = loader.getenv("loader_menu_title") or "Welcome to FreeBSD" local menu_header_align = loader.getenv("loader_menu_title_align") local menu_header_x x = x + shift.x y = y + shift.y if drawframe(x, y, w) == false then return end if menu_header_align ~= nil then menu_header_align = menu_header_align:lower() if menu_header_align == "left" then -- Just inside the left border on top menu_header_x = x + 1 elseif menu_header_align == "right" then -- Just inside the right border on top menu_header_x = x + w - #menu_header end end if menu_header_x == nil then menu_header_x = x + (w // 2) - (#menu_header // 2) end screen.setcursor(menu_header_x - 1, y) if menu_header ~= "" then printc(" " .. menu_header .. " ") end end local function drawbrand() local x = tonumber(loader.getenv("loader_brand_x")) or brand_position.x local y = tonumber(loader.getenv("loader_brand_y")) or brand_position.y local branddef = getBranddef(loader.getenv("loader_brand")) if branddef == nil then branddef = getBranddef(drawer.default_brand) end local graphic = branddef.graphic x = x + shift.x y = y + shift.y if branddef.shift ~= nil then x = x + branddef.shift.x y = y + branddef.shift.y end if core.isFramebufferConsole() and loader.term_putimage ~= nil and branddef.image ~= nil then if loader.term_putimage(branddef.image, 1, 1, 0, 7, 0) then return true end end draw(x, y, graphic) end local function drawlogo() local x = tonumber(loader.getenv("loader_logo_x")) or logo_position.x local y = tonumber(loader.getenv("loader_logo_y")) or logo_position.y local logo = loader.getenv("loader_logo") local colored = color.isEnabled() local logodef = getLogodef(logo) if logodef == nil or logodef.graphic == nil or (not colored and logodef.requires_color) then -- Choose a sensible default if colored then logodef = getLogodef(drawer.default_color_logodef) else logodef = getLogodef(drawer.default_bw_logodef) end -- Something has gone terribly wrong. if logodef == nil then logodef = getLogodef(drawer.default_fallback_logodef) end end if logodef ~= nil and logodef.graphic == none then shift = logodef.shift else shift = default_shift end x = x + shift.x y = y + shift.y if logodef ~= nil and logodef.shift ~= nil then x = x + logodef.shift.x y = y + logodef.shift.y end if core.isFramebufferConsole() and loader.term_putimage ~= nil and logodef.image ~= nil then local y1 = 15 if logodef.image_rl ~= nil then y1 = logodef.image_rl end if loader.term_putimage(logodef.image, x, y, 0, y + y1, 0) then return true end end draw(x, y, logodef.graphic) end local function drawitem(func) local console = loader.getenv("console") for c in string.gmatch(console, "%w+") do loader.setenv("console", c) func() end loader.setenv("console", console) end fbsd_brand = { " ______ ____ _____ _____ ", " | ____| | _ \\ / ____| __ \\ ", " | |___ _ __ ___ ___ | |_) | (___ | | | |", " | ___| '__/ _ \\/ _ \\| _ < \\___ \\| | | |", " | | | | | __/ __/| |_) |____) | |__| |", " | | | | | | || | | |", " |_| |_| \\___|\\___||____/|_____/|_____/ " } none = {""} menu_name_handlers = { -- Menu name handlers should take the menu being drawn and entry being -- drawn as parameters, and return the name of the item. -- This is designed so that everything, including menu separators, may -- have their names derived differently. The default action for entry -- types not specified here is to use entry.name directly. [core.MENU_SEPARATOR] = function(_, entry) if entry.name ~= nil then if type(entry.name) == "function" then return entry.name() end return entry.name end return "" end, [core.MENU_CAROUSEL_ENTRY] = function(_, entry) local carid = entry.carousel_id local caridx = config.getCarouselIndex(carid) local choices = entry.items if type(choices) == "function" then choices = choices() end if #choices < caridx then caridx = 1 end return entry.name(caridx, choices[caridx], choices) end, } branddefs = { -- Indexed by valid values for loader_brand in loader.conf(5). Valid -- keys are: graphic (table depicting graphic) ["fbsd"] = { graphic = fbsd_brand, image = "/boot/images/freebsd-brand-rev.png", }, ["none"] = { graphic = none, }, } logodefs = { -- Indexed by valid values for loader_logo in loader.conf(5). Valid keys -- are: requires_color (boolean), graphic (table depicting graphic), and -- shift (table containing x and y). ["tribute"] = { graphic = fbsd_brand, }, ["tributebw"] = { graphic = fbsd_brand, }, ["none"] = { graphic = none, shift = {x = 17, y = 0}, }, } brand_position = {x = 2, y = 1} logo_position = {x = 46, y = 4} menu_position = {x = 5, y = 10} frame_size = {w = 42, h = 13} default_shift = {x = 0, y = 0} shift = default_shift -- Module exports drawer.default_brand = 'fbsd' drawer.default_color_logodef = 'orb' drawer.default_bw_logodef = 'orbbw' -- For when things go terribly wrong; this def should be present here in the -- drawer module in case it's a filesystem issue. drawer.default_fallback_logodef = 'none' -- These should go away after FreeBSD 13; only available for backwards -- compatibility with old logo- files. function drawer.addBrand(name, def) branddefs[name] = def end function drawer.addLogo(name, def) logodefs[name] = def end drawer.frame_styles = { -- Indexed by valid values for loader_menu_frame in loader.conf(5). -- All of the keys appearing below must be set for any menu frame style -- added to drawer.frame_styles. ["ascii"] = { horizontal = "-", vertical = "|", top_left = "+", bottom_left = "+", top_right = "+", bottom_right = "+", }, ["single"] = { horizontal = "\xE2\x94\x80", vertical = "\xE2\x94\x82", top_left = "\xE2\x94\x8C", bottom_left = "\xE2\x94\x94", top_right = "\xE2\x94\x90", bottom_right = "\xE2\x94\x98", }, ["double"] = { horizontal = "\xE2\x95\x90", vertical = "\xE2\x95\x91", top_left = "\xE2\x95\x94", bottom_left = "\xE2\x95\x9A", top_right = "\xE2\x95\x97", bottom_right = "\xE2\x95\x9D", }, } function drawer.drawscreen(menudef) -- drawlogo() must go first. -- it determines the positions of other elements drawitem(drawlogo) drawitem(drawbrand) drawitem(drawbox) return drawmenu(menudef) end return drawer diff --git a/stand/lua/gfx-beastie.lua b/stand/lua/gfx-beastie.lua index c806cdb86fa1..443f0fd888ba 100644 --- a/stand/lua/gfx-beastie.lua +++ b/stand/lua/gfx-beastie.lua @@ -1,55 +1,53 @@ -- -- SPDX-License-Identifier: BSD-2-Clause -- -- Copyright (c) 2018 Kyle Evans -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- return { logo = { graphic = { " \027[31m, ,", " /( )`", " \\ \\___ / |", " /- \027[37m_\027[31m `-/ '", " (\027[37m/\\/ \\\027[31m \\ /\\", " \027[37m/ / |\027[31m ` \\", " \027[34mO O \027[37m) \027[31m/ |", " \027[37m`-^--'\027[31m`< '", " (_.) _ ) /", " `.___/` /", " `-----' /", " \027[33m<----.\027[31m __ / __ \\", " \027[33m<----|====\027[31mO)))\027[33m==\027[31m) \\) /\027[33m====|", " \027[33m<----'\027[31m `--' `.__,' \\", " | |", " \\ / /\\", " \027[36m______\027[31m( (_ / \\______/", " \027[36m,' ,-----' |", " `--{__________)\027[m", }, requires_color = true, } } diff --git a/stand/lua/gfx-beastiebw.lua b/stand/lua/gfx-beastiebw.lua index ffda4c114447..c71e53a9c4e3 100644 --- a/stand/lua/gfx-beastiebw.lua +++ b/stand/lua/gfx-beastiebw.lua @@ -1,54 +1,52 @@ -- -- SPDX-License-Identifier: BSD-2-Clause -- -- Copyright (c) 2018 Kyle Evans -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- return { logo = { graphic = { " , ,", " /( )`", " \\ \\___ / |", " /- _ `-/ '", " (/\\/ \\ \\ /\\", " / / | ` \\", " O O ) / |", " `-^--'`< '", " (_.) _ ) /", " `.___/` /", " `-----' /", " <----. __ / __ \\", " <----|====O)))==) \\) /====|", " <----' `--' `.__,' \\", " | |", " \\ / /\\", " ______( (_ / \\______/", " ,' ,-----' |", " `--{__________)", }, } } diff --git a/stand/lua/gfx-fbsdbw.lua b/stand/lua/gfx-fbsdbw.lua index 7062a0a61e0d..470af71a07b5 100644 --- a/stand/lua/gfx-fbsdbw.lua +++ b/stand/lua/gfx-fbsdbw.lua @@ -1,49 +1,47 @@ -- -- SPDX-License-Identifier: BSD-2-Clause -- -- Copyright (c) 2018 Kyle Evans -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- return { logo = { graphic = { " ______", " | ____| __ ___ ___ ", " | |__ | '__/ _ \\/ _ \\", " | __|| | | __/ __/", " | | | | | | |", " |_| |_| \\___|\\___|", " ____ _____ _____", " | _ \\ / ____| __ \\", " | |_) | (___ | | | |", " | _ < \\___ \\| | | |", " | |_) |____) | |__| |", " | | | |", " |____/|_____/|_____/", }, shift = {x = 5, y = 4}, } } diff --git a/stand/lua/gfx-orb.lua b/stand/lua/gfx-orb.lua index c313fc1617b7..00f4aeb3bceb 100644 --- a/stand/lua/gfx-orb.lua +++ b/stand/lua/gfx-orb.lua @@ -1,54 +1,52 @@ -- -- SPDX-License-Identifier: BSD-2-Clause -- -- Copyright (c) 2018 Kyle Evans -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- return { logo = { graphic = { " \027[31m``` \027[31;1m`\027[31m", " s` `.....---...\027[31;1m....--.``` -/\027[31m", " +o .--` \027[31;1m/y:` +.\027[31m", " yo`:. \027[31;1m:o `+-\027[31m", " y/ \027[31;1m-/` -o/\027[31m", " .- \027[31;1m::/sy+:.\027[31m", " / \027[31;1m`-- /\027[31m", " `: \027[31;1m:`\027[31m", " `: \027[31;1m:`\027[31m", " / \027[31;1m/\027[31m", " .- \027[31;1m-.\027[31m", " -- \027[31;1m-.\027[31m", " `:` \027[31;1m`:`", " \027[31;1m.-- `--.", " .---.....----.\027[m", }, requires_color = true, shift = {x = 2, y = 3}, image = "/boot/images/freebsd-logo-rev.png", image_rl = 15 } } diff --git a/stand/lua/gfx-orbbw.lua b/stand/lua/gfx-orbbw.lua index 641c7eef268a..93ffd2366196 100644 --- a/stand/lua/gfx-orbbw.lua +++ b/stand/lua/gfx-orbbw.lua @@ -1,51 +1,49 @@ -- -- SPDX-License-Identifier: BSD-2-Clause -- -- Copyright (c) 2018 Kyle Evans -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- return { logo = { graphic = { " ``` `", " s` `.....---.......--.``` -/", " +o .--` /y:` +.", " yo`:. :o `+-", " y/ -/` -o/", " .- ::/sy+:.", " / `-- /", " `: :`", " `: :`", " / /", " .- -.", " -- -.", " `:` `:`", " .-- `--.", " .---.....----.", }, shift = {x = 2, y = 4}, } } diff --git a/stand/lua/hook.lua b/stand/lua/hook.lua index c1b200e8c4b4..796189eeef18 100644 --- a/stand/lua/hook.lua +++ b/stand/lua/hook.lua @@ -1,83 +1,81 @@ -- -- SPDX-License-Identifier: BSD-2-Clause -- -- Copyright (c) 2018 Kyle Evans -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- local hook = {} local registered_hooks = {} -- Module exports -- Register a hook type; these are the names that hooks may be registered for. -- It is expected that modules will register all of their hook types upon -- initial load. Other modules may then, at any time, register a hook for these -- types. -- -- Naming convention: hook types should be sensible named, preferably prefixed -- with the name of the module that registered them. They would also ideally -- describe an action that may or may not match a function name. -- e.g. config.reloaded which takes place after config has been reloaded, -- possibly from a different source. function hook.registerType(hooktype) registered_hooks[hooktype] = {} end function hook.register(hooktype, hookfunc) local selected_hooks = registered_hooks[hooktype] if selected_hooks == nil then print("Tried registering a hook for an unknown hook type: " .. hooktype) return end selected_hooks[#selected_hooks + 1] = hookfunc registered_hooks[hooktype] = selected_hooks end -- Takes a hooktype and runs all functions associated with that specific hook -- type in the order that they were registered in. This ordering should likely -- not be relied upon. function hook.runAll(hooktype, data) local selected_hooks = registered_hooks[hooktype] if selected_hooks == nil then -- This message, and the print() above, should only be seen by -- developers. Hook type registration should have happened at -- module load, so if this hasn't happened then we have messed -- up the order in which we've loaded modules and we need to -- catch that as soon as possible. print("Tried to run hooks for an unknown hook type: " .. hooktype) return 0 end if #selected_hooks > 0 then for _, func in ipairs(selected_hooks) do func(data) end end return #selected_hooks end return hook diff --git a/stand/lua/loader.lua b/stand/lua/loader.lua index 8910af4673f9..454cd7e6332f 100644 --- a/stand/lua/loader.lua +++ b/stand/lua/loader.lua @@ -1,59 +1,57 @@ -- -- SPDX-License-Identifier: BSD-2-Clause -- -- Copyright (c) 2015 Pedro Souza -- Copyright (c) 2018 Kyle Evans -- All rights reserved. -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- -- The cli module should be included first here. Some of the functions that it -- defines are necessary for the Lua-based loader to operate in general. -- Other modules will also need some of the functions it defines to safely -- execute loader commands. require("cli") local color = require("color") local core = require("core") local config = require("config") local password = require("password") config.load() if core.isUEFIBoot() then loader.perform("efi-autoresizecons") end -- Our console may have been setup with different settings before we get -- here, so make sure we reset everything back to default. if color.isEnabled() then printc(core.KEYSTR_RESET) end try_include("local") password.check() if not core.isMenuSkipped() then require("menu").run() else -- Load kernel/modules before we go config.loadelf() end diff --git a/stand/lua/menu.lua b/stand/lua/menu.lua index 5fa8c23f0e67..7da03ad9e673 100644 --- a/stand/lua/menu.lua +++ b/stand/lua/menu.lua @@ -1,566 +1,564 @@ -- -- SPDX-License-Identifier: BSD-2-Clause -- -- Copyright (c) 2015 Pedro Souza -- Copyright (c) 2018 Kyle Evans -- All rights reserved. -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- local cli = require("cli") local core = require("core") local color = require("color") local config = require("config") local screen = require("screen") local drawer = require("drawer") local menu = {} local drawn_menu local return_menu_entry = { entry_type = core.MENU_RETURN, name = "Back to main menu" .. color.highlight(" [Backspace]"), } local function OnOff(str, value) if value then return str .. color.escapefg(color.GREEN) .. "On" .. color.resetfg() else return str .. color.escapefg(color.RED) .. "off" .. color.resetfg() end end local function bootenvSet(env) loader.setenv("vfs.root.mountfrom", env) loader.setenv("currdev", env .. ":") config.reload() if loader.getenv("kernelname") ~= nil then loader.perform("unload") end end local function multiUserPrompt() return loader.getenv("loader_menu_multi_user_prompt") or "Multi user" end -- Module exports menu.handlers = { -- Menu handlers take the current menu and selected entry as parameters, -- and should return a boolean indicating whether execution should -- continue or not. The return value may be omitted if this entry should -- have no bearing on whether we continue or not, indicating that we -- should just continue after execution. [core.MENU_ENTRY] = function(_, entry) -- run function entry.func() end, [core.MENU_CAROUSEL_ENTRY] = function(_, entry) -- carousel (rotating) functionality local carid = entry.carousel_id local caridx = config.getCarouselIndex(carid) local choices = entry.items if type(choices) == "function" then choices = choices() end if #choices > 0 then caridx = (caridx % #choices) + 1 config.setCarouselIndex(carid, caridx) entry.func(caridx, choices[caridx], choices) end end, [core.MENU_SUBMENU] = function(_, entry) menu.process(entry.submenu) end, [core.MENU_RETURN] = function(_, entry) -- allow entry to have a function/side effect if entry.func ~= nil then entry.func() end return false end, } -- loader menu tree is rooted at menu.welcome menu.boot_environments = { entries = { -- return to welcome menu return_menu_entry, { entry_type = core.MENU_CAROUSEL_ENTRY, carousel_id = "be_active", items = core.bootenvList, name = function(idx, choice, all_choices) if #all_choices == 0 then return "Active: " end local is_default = (idx == 1) local bootenv_name = "" local name_color if is_default then name_color = color.escapefg(color.GREEN) else name_color = color.escapefg(color.BLUE) end bootenv_name = bootenv_name .. name_color .. choice .. color.resetfg() return color.highlight("A").."ctive: " .. bootenv_name .. " (" .. idx .. " of " .. #all_choices .. ")" end, func = function(_, choice, _) bootenvSet(choice) end, alias = {"a", "A"}, }, { entry_type = core.MENU_ENTRY, visible = function() return core.isRewinded() == false end, name = function() return color.highlight("b") .. "ootfs: " .. core.bootenvDefault() end, func = function() -- Reset active boot environment to the default config.setCarouselIndex("be_active", 1) bootenvSet(core.bootenvDefault()) end, alias = {"b", "B"}, }, }, } menu.boot_options = { entries = { -- return to welcome menu return_menu_entry, -- load defaults { entry_type = core.MENU_ENTRY, name = "Load System " .. color.highlight("D") .. "efaults", func = core.setDefaults, alias = {"d", "D"}, }, { entry_type = core.MENU_SEPARATOR, }, { entry_type = core.MENU_SEPARATOR, name = "Boot Options:", }, -- acpi { entry_type = core.MENU_ENTRY, visible = core.isSystem386, name = function() return OnOff(color.highlight("A") .. "CPI :", core.acpi) end, func = core.setACPI, alias = {"a", "A"}, }, -- safe mode { entry_type = core.MENU_ENTRY, name = function() return OnOff("Safe " .. color.highlight("M") .. "ode :", core.sm) end, func = core.setSafeMode, alias = {"m", "M"}, }, -- single user { entry_type = core.MENU_ENTRY, name = function() return OnOff(color.highlight("S") .. "ingle user:", core.su) end, func = core.setSingleUser, alias = {"s", "S"}, }, -- verbose boot { entry_type = core.MENU_ENTRY, name = function() return OnOff(color.highlight("V") .. "erbose :", core.verbose) end, func = core.setVerbose, alias = {"v", "V"}, }, }, } menu.welcome = { entries = function() local menu_entries = menu.welcome.all_entries local multi_user = menu_entries.multi_user local single_user = menu_entries.single_user local boot_entry_1, boot_entry_2 if core.isSingleUserBoot() then -- Swap the first two menu items on single user boot. -- We'll cache the alternate entries for performance. local alts = menu_entries.alts if alts == nil then single_user = core.deepCopyTable(single_user) multi_user = core.deepCopyTable(multi_user) single_user.name = single_user.alternate_name multi_user.name = multi_user.alternate_name menu_entries.alts = { single_user = single_user, multi_user = multi_user, } else single_user = alts.single_user multi_user = alts.multi_user end boot_entry_1, boot_entry_2 = single_user, multi_user else boot_entry_1, boot_entry_2 = multi_user, single_user end return { boot_entry_1, boot_entry_2, menu_entries.prompt, menu_entries.reboot, menu_entries.console, { entry_type = core.MENU_SEPARATOR, }, { entry_type = core.MENU_SEPARATOR, name = "Options:", }, menu_entries.kernel_options, menu_entries.boot_options, menu_entries.zpool_checkpoints, menu_entries.boot_envs, menu_entries.chainload, menu_entries.vendor, } end, all_entries = { multi_user = { entry_type = core.MENU_ENTRY, name = function() return color.highlight("B") .. "oot " .. multiUserPrompt() .. " " .. color.highlight("[Enter]") end, -- Not a standard menu entry function! alternate_name = function() return color.highlight("B") .. "oot " .. multiUserPrompt() end, func = function() core.setSingleUser(false) core.boot() end, alias = {"b", "B"}, }, single_user = { entry_type = core.MENU_ENTRY, name = "Boot " .. color.highlight("S") .. "ingle user", -- Not a standard menu entry function! alternate_name = "Boot " .. color.highlight("S") .. "ingle user " .. color.highlight("[Enter]"), func = function() core.setSingleUser(true) core.boot() end, alias = {"s", "S"}, }, console = { entry_type = core.MENU_ENTRY, name = function() return color.highlight("C") .. "ons: " .. core.getConsoleName() end, func = function() core.nextConsoleChoice() end, alias = {"c", "C"}, }, prompt = { entry_type = core.MENU_RETURN, name = color.highlight("Esc") .. "ape to loader prompt", func = function() loader.setenv("autoboot_delay", "NO") end, alias = {core.KEYSTR_ESCAPE}, }, reboot = { entry_type = core.MENU_ENTRY, name = color.highlight("R") .. "eboot", func = function() loader.perform("reboot") end, alias = {"r", "R"}, }, kernel_options = { entry_type = core.MENU_CAROUSEL_ENTRY, carousel_id = "kernel", items = core.kernelList, name = function(idx, choice, all_choices) if #all_choices == 0 then return "Kernel: " end local is_default = (idx == 1) local kernel_name = "" local name_color if is_default then name_color = color.escapefg(color.GREEN) kernel_name = "default/" else name_color = color.escapefg(color.BLUE) end kernel_name = kernel_name .. name_color .. choice .. color.resetfg() return color.highlight("K") .. "ernel: " .. kernel_name .. " (" .. idx .. " of " .. #all_choices .. ")" end, func = function(_, choice, _) if loader.getenv("kernelname") ~= nil then loader.perform("unload") end config.selectKernel(choice) end, alias = {"k", "K"}, }, boot_options = { entry_type = core.MENU_SUBMENU, name = "Boot " .. color.highlight("O") .. "ptions", submenu = menu.boot_options, alias = {"o", "O"}, }, zpool_checkpoints = { entry_type = core.MENU_ENTRY, name = function() local rewind = "No" if core.isRewinded() then rewind = "Yes" end return "Rewind ZFS " .. color.highlight("C") .. "heckpoint: " .. rewind end, func = function() core.changeRewindCheckpoint() if core.isRewinded() then bootenvSet( core.bootenvDefaultRewinded()) else bootenvSet(core.bootenvDefault()) end config.setCarouselIndex("be_active", 1) end, visible = function() return core.isZFSBoot() and core.isCheckpointed() end, alias = {"c", "C"}, }, boot_envs = { entry_type = core.MENU_SUBMENU, visible = function() return core.isZFSBoot() and #core.bootenvList() > 1 end, name = "Boot " .. color.highlight("E") .. "nvironments", submenu = menu.boot_environments, alias = {"e", "E"}, }, chainload = { entry_type = core.MENU_ENTRY, name = function() return 'Chain' .. color.highlight("L") .. "oad " .. loader.getenv('chain_disk') end, func = function() loader.perform("chain " .. loader.getenv('chain_disk')) end, visible = function() return loader.getenv('chain_disk') ~= nil end, alias = {"l", "L"}, }, vendor = { entry_type = core.MENU_ENTRY, visible = function() return false end }, }, } menu.default = menu.welcome -- current_alias_table will be used to keep our alias table consistent across -- screen redraws, instead of relying on whatever triggered the redraw to update -- the local alias_table in menu.process. menu.current_alias_table = {} function menu.draw(menudef) -- Clear the screen, reset the cursor, then draw screen.clear() menu.current_alias_table = drawer.drawscreen(menudef) drawn_menu = menudef screen.defcursor() end -- 'keypress' allows the caller to indicate that a key has been pressed that we -- should process as our initial input. function menu.process(menudef, keypress) assert(menudef ~= nil) if drawn_menu ~= menudef then menu.draw(menudef) end while true do local key = keypress or io.getchar() keypress = nil -- Special key behaviors if (key == core.KEY_BACKSPACE or key == core.KEY_DELETE) and menudef ~= menu.default then break elseif key == core.KEY_ENTER then core.boot() -- Should not return. If it does, escape menu handling -- and drop to loader prompt. return false end key = string.char(key) -- check to see if key is an alias local sel_entry = nil for k, v in pairs(menu.current_alias_table) do if key == k then sel_entry = v break end end -- if we have an alias do the assigned action: if sel_entry ~= nil then local handler = menu.handlers[sel_entry.entry_type] assert(handler ~= nil) -- The handler's return value indicates if we -- need to exit this menu. An omitted or true -- return value means to continue. if handler(menudef, sel_entry) == false then return end -- If we got an alias key the screen is out of date... -- redraw it. menu.draw(menudef) end end end function menu.run() local autoboot_key local delay = loader.getenv("autoboot_delay") if delay ~= nil and delay:lower() == "no" then delay = nil else delay = tonumber(delay) or 10 end if delay == -1 then core.boot() return end menu.draw(menu.default) if delay ~= nil then autoboot_key = menu.autoboot(delay) -- autoboot_key should return the key pressed. It will only -- return nil if we hit the timeout and executed the timeout -- command. Bail out. if autoboot_key == nil then return end end menu.process(menu.default, autoboot_key) drawn_menu = nil screen.defcursor() print("Exiting menu!") end function menu.autoboot(delay) local x = loader.getenv("loader_menu_timeout_x") or 4 local y = loader.getenv("loader_menu_timeout_y") or 23 local endtime = loader.time() + delay local time local last repeat time = endtime - loader.time() if last == nil or last ~= time then last = time screen.setcursor(x, y) print("Autoboot in " .. time .. " seconds. [Space] to pause ") screen.defcursor() end if io.ischar() then local ch = io.getchar() if ch == core.KEY_ENTER then break else -- erase autoboot msg screen.setcursor(0, y) print(string.rep(" ", 80)) screen.defcursor() return ch end end loader.delay(50000) until time <= 0 local cmd = loader.getenv("menu_timeout_command") or "boot" cli_execute_unparsed(cmd) return nil end -- CLI commands function cli.menu() menu.run() end return menu diff --git a/stand/lua/password.lua b/stand/lua/password.lua index a47a617944d7..3d3060f5cab3 100644 --- a/stand/lua/password.lua +++ b/stand/lua/password.lua @@ -1,148 +1,146 @@ -- -- SPDX-License-Identifier: BSD-2-Clause -- -- Copyright (c) 2015 Pedro Souza -- Copyright (c) 2018 Kyle Evans -- All rights reserved. -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- local core = require("core") local screen = require("screen") local password = {} local INCORRECT_PASSWORD = "loader: incorrect password" -- Asterisks as a password mask local show_password_mask = false local twiddle_chars = {"/", "-", "\\", "|"} local screen_setup = false local function setup_screen() screen.clear() screen.defcursor() screen_setup = true end -- Module exports function password.read(prompt_length) local str = "" local twiddle_pos = 1 local function draw_twiddle() printc(twiddle_chars[twiddle_pos]) -- Reset cursor to just after the password prompt screen.setcursor(prompt_length + 2, screen.default_y) twiddle_pos = (twiddle_pos % #twiddle_chars) + 1 end -- Space between the prompt and any on-screen feedback printc(" ") while true do local ch = io.getchar() if ch == core.KEY_ENTER then break end if ch == core.KEY_BACKSPACE or ch == core.KEY_DELETE then if #str > 0 then if show_password_mask then printc("\008 \008") else draw_twiddle() end str = str:sub(1, #str - 1) end else if show_password_mask then printc("*") else draw_twiddle() end str = str .. string.char(ch) end end return str end function password.check() -- pwd is optionally supplied if we want to check it local function doPrompt(prompt, pwd) local attempts = 1 local function clear_incorrect_text_prompt() printc("\r" .. string.rep(" ", #INCORRECT_PASSWORD)) end if not screen_setup then setup_screen() end while true do if attempts > 1 then clear_incorrect_text_prompt() end screen.defcursor() printc(prompt) local read_pwd = password.read(#prompt) if pwd == nil or pwd == read_pwd then -- Clear the prompt + twiddle printc(string.rep(" ", #prompt + 5)) return read_pwd end printc("\n" .. INCORRECT_PASSWORD) attempts = attempts + 1 loader.delay(3*1000*1000) end end local function compare(prompt, pwd) if pwd == nil then return end doPrompt(prompt, pwd) end local boot_pwd = loader.getenv("bootlock_password") compare("Bootlock password:", boot_pwd) local geli_prompt = loader.getenv("geom_eli_passphrase_prompt") if geli_prompt ~= nil and geli_prompt:lower() == "yes" then local passphrase = doPrompt("GELI Passphrase:") loader.setenv("kern.geom.eli.passphrase", passphrase) end local pwd = loader.getenv("password") if pwd ~= nil then core.autoboot() loader.setenv("autoboot_delay", "NO") -- The autoboot sequence was interrupted, so we'll need to -- prompt for a password. Put the screen back into a known -- good state, otherwise we're drawing back a couple lines -- in the middle of other text. setup_screen() end compare("Loader password:", pwd) end return password diff --git a/stand/lua/screen.lua b/stand/lua/screen.lua index 34c78ca28725..4437a34f95f1 100644 --- a/stand/lua/screen.lua +++ b/stand/lua/screen.lua @@ -1,70 +1,68 @@ -- -- SPDX-License-Identifier: BSD-2-Clause -- -- Copyright (c) 2015 Pedro Souza -- All rights reserved. -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- local color = require("color") local core = require("core") local screen = {} -- Module exports screen.default_x = 0 screen.default_y = 25 function screen.clear() printc(core.KEYSTR_CSI .. "H" .. core.KEYSTR_CSI .. "J") end function screen.setcursor(x, y) printc(core.KEYSTR_CSI .. y .. ";" .. x .. "H") end function screen.setforeground(color_value) if color.disabled then return end printc(color.escapefg(color_value)) end function screen.setbackground(color_value) if color.disabled then return end printc(color.escapebg(color_value)) end function screen.defcolor() printc(color.default()) end function screen.defcursor() screen.setcursor(screen.default_x, screen.default_y) end return screen diff --git a/usr.sbin/bsnmpd/modules/snmp_bridge/BEGEMOT-BRIDGE-MIB.txt b/usr.sbin/bsnmpd/modules/snmp_bridge/BEGEMOT-BRIDGE-MIB.txt index bde89b6ee73b..77de04446a54 100644 --- a/usr.sbin/bsnmpd/modules/snmp_bridge/BEGEMOT-BRIDGE-MIB.txt +++ b/usr.sbin/bsnmpd/modules/snmp_bridge/BEGEMOT-BRIDGE-MIB.txt @@ -1,1169 +1,1167 @@ -- -- Copyright (C) 2006 Shteryana Shopova -- All rights reserved. -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- BEGEMOT-BRIDGE-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Counter32, Integer32, TimeTicks, mib-2 FROM SNMPv2-SMI TEXTUAL-CONVENTION, MacAddress, TruthValue, RowStatus FROM SNMPv2-TC BridgeId, Timeout FROM BRIDGE-MIB InterfaceIndex FROM IF-MIB begemot FROM BEGEMOT-MIB; begemotBridge MODULE-IDENTITY LAST-UPDATED "201612170000Z" ORGANIZATION "Sofia University St. Kliment Ohridski" CONTACT-INFO " Shteryana Shopova Postal: Faculty of Mathematics and Informatics 5 James Bourchier Blvd. 1164 Sofia Bulgaria Fax: +359 2 687 180 E-Mail: syrinx@FreeBSD.org" DESCRIPTION "The Begemot MIB for managing bridge interfaces." REVISION "201612170000Z" DESCRIPTION "Address some minor typos and grammar mistakes." REVISION "200708060000Z" DESCRIPTION "Third revision adds begemotBridgeBasePortPrivate object." REVISION "200611210000Z" DESCRIPTION "Second revision adds support for monitoring RSTP specific variables." REVISION "200607270000Z" DESCRIPTION "Initial revision." ::= { begemot 205 } -- ---------------------------------------------------------- -- BridgeIfName ::= TEXTUAL-CONVENTION DISPLAY-HINT "16a" STATUS current DESCRIPTION "Name of a bridge interface." SYNTAX OCTET STRING (SIZE(1..16)) BridgeIfNameOrEmpty ::= TEXTUAL-CONVENTION DISPLAY-HINT "16a" STATUS current DESCRIPTION "Name of a bridge interface." SYNTAX OCTET STRING (SIZE(0..16)) BridgePortId ::= TEXTUAL-CONVENTION DISPLAY-HINT "1x.1x" STATUS current DESCRIPTION "A port identifier that contains a bridge port's STP priority in the first octet and the port number in the second octet." SYNTAX OCTET STRING (SIZE(2)) -- ---------------------------------------------------------- -- -- subtrees in the Begemot Bridge MIB -- ---------------------------------------------------------- -- begemotBridgeNotifications OBJECT IDENTIFIER ::= { begemotBridge 0 } begemotBridgeBase OBJECT IDENTIFIER ::= { begemotBridge 1 } begemotBridgeStp OBJECT IDENTIFIER ::= { begemotBridge 2 } begemotBridgeTp OBJECT IDENTIFIER ::= { begemotBridge 3 } begemotBridgePf OBJECT IDENTIFIER ::= { begemotBridge 4 } begemotBridgeConfigObjects OBJECT IDENTIFIER ::= { begemotBridge 5 } -- ---------------------------------------------------------- -- -- the base Bridge interface table -- ---------------------------------------------------------- -- begemotBridgeBaseTable OBJECT-TYPE SYNTAX SEQUENCE OF BegemotBridgeBaseEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains generic information for each bridge interface on the managed device." ::= { begemotBridgeBase 1 } begemotBridgeBaseEntry OBJECT-TYPE SYNTAX BegemotBridgeBaseEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of information for the bridge interfaces on the managed device." INDEX { begemotBridgeBaseName } ::= { begemotBridgeBaseTable 1 } BegemotBridgeBaseEntry ::= SEQUENCE { begemotBridgeBaseName BridgeIfName, begemotBridgeBaseAddress MacAddress, begemotBridgeBaseNumPorts Integer32, begemotBridgeBaseType INTEGER, begemotBridgeBaseStatus RowStatus } begemotBridgeBaseName OBJECT-TYPE SYNTAX BridgeIfName MAX-ACCESS read-only STATUS current DESCRIPTION "The name of the bridge interface for which this entry contains management information." ::= { begemotBridgeBaseEntry 1 } begemotBridgeBaseAddress OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-only STATUS current DESCRIPTION "The MAC address of the bridge interface." ::= { begemotBridgeBaseEntry 2 } begemotBridgeBaseNumPorts OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of ports, members of this bridge." ::= { begemotBridgeBaseEntry 3 } begemotBridgeBaseType OBJECT-TYPE SYNTAX INTEGER { unknown(1), transparent-only(2), sourceroute-only(3), srt(4) } MAX-ACCESS read-only STATUS current DESCRIPTION "Indicates what type of bridging this bridge can perform." ::= { begemotBridgeBaseEntry 4 } begemotBridgeBaseStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "Used to create/destroy bridge interfaces on the managed device." ::= { begemotBridgeBaseEntry 5 } -- ---------------------------------------------------------- -- -- the base Bridge ports table -- ---------------------------------------------------------- -- begemotBridgeBasePortTable OBJECT-TYPE SYNTAX SEQUENCE OF BegemotBridgeBasePortEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table containing generic information about ports, members of each bridge interface." ::= { begemotBridgeBase 2 } begemotBridgeBasePortEntry OBJECT-TYPE SYNTAX BegemotBridgeBasePortEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of information about a specific port, member of a bridge interface." INDEX { begemotBridgeBaseName, begemotBridgeBasePortIfIndex } ::= { begemotBridgeBasePortTable 1 } BegemotBridgeBasePortEntry ::= SEQUENCE { begemotBridgeBasePort Integer32, begemotBridgeBasePortIfIndex InterfaceIndex, begemotBridgeBaseSpanEnabled INTEGER, begemotBridgeBasePortDelayExceededDiscards Counter32, begemotBridgeBasePortMtuExceededDiscards Counter32, begemotBridgeBasePortStatus RowStatus, begemotBridgeBasePortPrivate TruthValue } begemotBridgeBasePort OBJECT-TYPE SYNTAX Integer32 (1..65535) MAX-ACCESS read-only STATUS current DESCRIPTION "The system interface index of the interface corresponding to this port." ::= { begemotBridgeBasePortEntry 1 } begemotBridgeBasePortIfIndex OBJECT-TYPE SYNTAX InterfaceIndex MAX-ACCESS read-only STATUS current DESCRIPTION "The value of the instance of the ifIndex object, defined in IF-MIB, for the interface corresponding to this port." ::= { begemotBridgeBasePortEntry 2 } begemotBridgeBaseSpanEnabled OBJECT-TYPE SYNTAX INTEGER { enabled(1), disabled(2) } MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this objects reflects whether the port is a span port on the specified bridge interface." ::= { begemotBridgeBasePortEntry 3 } begemotBridgeBasePortDelayExceededDiscards OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames discarded by this port due to excessive transit delay through the bridge." ::= { begemotBridgeBasePortEntry 4 } begemotBridgeBasePortMtuExceededDiscards OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames discarded by this port due to an excessive size." ::= { begemotBridgeBasePortEntry 5 } begemotBridgeBasePortStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "Used to control addition of member ports to or removal of member ports from a specified bridge." ::= { begemotBridgeBasePortEntry 6 } begemotBridgeBasePortPrivate OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this objects reflects whether the port has a PRIVATE flag set. A port with this flags set can only communicate with ports not having the PRIVATE flag set." ::= { begemotBridgeBasePortEntry 7 } -- ---------------------------------------------------------- -- -- the Bridge interface STP table -- ---------------------------------------------------------- -- begemotBridgeStpTable OBJECT-TYPE SYNTAX SEQUENCE OF BegemotBridgeStpEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains Spanning Tree Protocol information for each bridge interface on the managed device." ::= { begemotBridgeStp 1 } begemotBridgeStpEntry OBJECT-TYPE SYNTAX BegemotBridgeStpEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of information about the Spanning Tree Protocol operation on a bridge interface." AUGMENTS { begemotBridgeBaseEntry } ::= { begemotBridgeStpTable 1 } BegemotBridgeStpEntry ::= SEQUENCE { begemotBridgeStpProtocolSpecification INTEGER, begemotBridgeStpPriority Integer32, begemotBridgeStpTimeSinceTopologyChange TimeTicks, begemotBridgeStpTopChanges Counter32, begemotBridgeStpDesignatedRoot BridgeId, begemotBridgeStpRootCost Integer32, begemotBridgeStpRootPort Integer32, begemotBridgeStpMaxAge Timeout, begemotBridgeStpHelloTime Timeout, begemotBridgeStpHoldTime Integer32, begemotBridgeStpForwardDelay Timeout, begemotBridgeStpBridgeMaxAge Timeout, begemotBridgeStpBridgeHelloTime Timeout, begemotBridgeStpBridgeForwardDelay Timeout, begemotBridgeStpVersion INTEGER, begemotBridgeStpTxHoldCount Integer32 } begemotBridgeStpProtocolSpecification OBJECT-TYPE SYNTAX INTEGER { unknown(1), decLb100(2), ieee8021d(3) } MAX-ACCESS read-only STATUS current DESCRIPTION "The Spanning Tree Protocol version being run on the bridge interface. The value 'decLb100(2)' indicates the DEC LANbridge 100 Spanning Tree protocol, 'ieee8021d(3)' indicates the bridge is running IEEE 802.1D STP implementation." ::= { begemotBridgeStpEntry 1 } begemotBridgeStpPriority OBJECT-TYPE SYNTAX Integer32 (0..65535) MAX-ACCESS read-write STATUS current DESCRIPTION "The priority value of the bridge interface forming the first two octets of the bridge identifier. Acceptable values are 0-61440, in steps of 4096." ::= { begemotBridgeStpEntry 2 } begemotBridgeStpTimeSinceTopologyChange OBJECT-TYPE SYNTAX TimeTicks UNITS "centi-seconds" MAX-ACCESS read-only STATUS current DESCRIPTION "The time (in hundreds of a second) since a topology change was last detected by this bridge." ::= { begemotBridgeStpEntry 3 } begemotBridgeStpTopChanges OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times a topology change was detected by the bridge interface since the management entity was initialized or reset." ::= { begemotBridgeStpEntry 4 } begemotBridgeStpDesignatedRoot OBJECT-TYPE SYNTAX BridgeId MAX-ACCESS read-only STATUS current DESCRIPTION "The bridge identifier of the root of the spanning tree as calculated by the Spanning Tree Protocol." ::= { begemotBridgeStpEntry 5 } begemotBridgeStpRootCost OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The cost of the path from this bridge to the root bridge." ::= { begemotBridgeStpEntry 6 } begemotBridgeStpRootPort OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The port number of the port that offers the lowest cost path from this bridge to the root bridge of the spanning tree. If this bridge is the root bridge, this object shall have a value of zero." ::= { begemotBridgeStpEntry 7 } begemotBridgeStpMaxAge OBJECT-TYPE SYNTAX Timeout UNITS "centi-seconds" MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum age of Spanning Tree Protocol information received from the network on any port, before that information is discarded. This is the actual value that the bridge is currently using." ::= { begemotBridgeStpEntry 8 } begemotBridgeStpHelloTime OBJECT-TYPE SYNTAX Timeout UNITS "centi-seconds" MAX-ACCESS read-only STATUS current DESCRIPTION "The amount of time between transmission of Configuration BPDUs by this bridge on any port, when it is the root of the spanning tree or is trying to become so. This is the actual value that this bridge is currently using." ::= { begemotBridgeStpEntry 9 } begemotBridgeStpHoldTime OBJECT-TYPE SYNTAX Integer32 UNITS "centi-seconds" MAX-ACCESS read-only STATUS current DESCRIPTION "This time value determines the interval length during which no more than two Configuration BPDUs shall be transmitted by this node, in units of hundredths of a second." ::= { begemotBridgeStpEntry 10 } begemotBridgeStpForwardDelay OBJECT-TYPE SYNTAX Timeout UNITS "centi-seconds" MAX-ACCESS read-only STATUS current DESCRIPTION "This value, measured in units of hundredths of a second determines how long a port will stay consecutively in the Listening and Learning states before transitioning to Forwarding state. This is the actual value currently used by the bridge as opposed to begemotBridgeStpBridgeForwardDelay, which is the value this and all bridges participating in the spanning tree were to use, if this was the root bridge." ::= { begemotBridgeStpEntry 11 } begemotBridgeStpBridgeMaxAge OBJECT-TYPE SYNTAX Timeout (600..4000) UNITS "centi-seconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The value that all bridges participating in the spanning tree would use for MaxAge if this bridge was the root of the spanning tree." ::= { begemotBridgeStpEntry 12 } begemotBridgeStpBridgeHelloTime OBJECT-TYPE SYNTAX Timeout (100..1000) UNITS "centi-seconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The value that all bridges participating in the spanning tree would use for HelloTime if this bridge was the root of the spanning tree." ::= { begemotBridgeStpEntry 13 } begemotBridgeStpBridgeForwardDelay OBJECT-TYPE SYNTAX Timeout (400..3000) UNITS "centi-seconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The value that all bridges participating in the spanning tree would use for ForwardDelay if this bridge was the root of the spanning tree." ::= { begemotBridgeStpEntry 14 } begemotBridgeStpVersion OBJECT-TYPE SYNTAX INTEGER { stpCompatible(0), rstp(2) } MAX-ACCESS read-write STATUS current DESCRIPTION "The version of Spanning Tree Protocol the bridge is currently running. The value 'stpCompatible(0)' indicates the Spanning Tree Protocol specified in IEEE 802.1D-1998 and 'rstp(2)' indicates the Rapid Spanning Tree Protocol specified in IEEE 802.1w and clause 17 of 802.1D-2004. The values are directly from the IEEE standard. New values may be defined as future versions of the protocol become available. The value of this object MUST be retained across reinitializations of the management system." DEFVAL { rstp } ::= { begemotBridgeStpEntry 15 } begemotBridgeStpTxHoldCount OBJECT-TYPE SYNTAX Integer32 (1..10) MAX-ACCESS read-write STATUS current DESCRIPTION "The value used by the Port Transmit state machine to limit the maximum transmission rate of BPDUs on the bridge interface. The value of this object MUST be retained across reinitializations of the management system." DEFVAL { 3 } ::= { begemotBridgeStpEntry 16 } -- ---------------------------------------------------------- -- -- the Bridge STP ports table -- ---------------------------------------------------------- -- begemotBridgeStpPortTable OBJECT-TYPE SYNTAX SEQUENCE OF BegemotBridgeStpPortEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table containing Spanning Tree Protocol information about the members of each bridge interface." ::= { begemotBridgeStp 2 } begemotBridgeStpPortEntry OBJECT-TYPE SYNTAX BegemotBridgeStpPortEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of Spanning Tree Protocol information about a specific member of a bridge interface." INDEX { begemotBridgeBaseName, begemotBridgeBasePortIfIndex } ::= { begemotBridgeStpPortTable 1 } BegemotBridgeStpPortEntry ::= SEQUENCE { begemotBridgeStpPort Integer32, begemotBridgeStpPortPriority Integer32, begemotBridgeStpPortState INTEGER, begemotBridgeStpPortEnable INTEGER, begemotBridgeStpPortPathCost Integer32, begemotBridgeStpPortDesignatedRoot BridgeId, begemotBridgeStpPortDesignatedCost Integer32, begemotBridgeStpPortDesignatedBridge BridgeId, begemotBridgeStpPortDesignatedPort BridgePortId, begemotBridgeStpPortForwardTransitions Counter32 } begemotBridgeStpPort OBJECT-TYPE SYNTAX Integer32 (1..65535) MAX-ACCESS read-only STATUS current DESCRIPTION "The system interface index of the interface corresponding to this port, for which the management entity has Spanning Tree Protocol information." ::= { begemotBridgeStpPortEntry 1 } begemotBridgeStpPortPriority OBJECT-TYPE SYNTAX Integer32 (0..255) MAX-ACCESS read-write STATUS current DESCRIPTION "The STP priority of this port that is contained in the first octet of its Port Identifier. The second octet contains the value of begemotBridgeStpPort." ::= { begemotBridgeStpPortEntry 2 } begemotBridgeStpPortState OBJECT-TYPE SYNTAX INTEGER { disabled(1), blocking(2), listening(3), learning(4), forwarding(5), broken(6) } MAX-ACCESS read-only STATUS current DESCRIPTION "The current state of the port as defined by the operation of the Spanning Tree Protocol. If the Spanning Tree Protocol is administratively disabled on the port, this object shall have value disabled(1). A value of broken(6) does not correspond to any legal state of a port, and if present should indicate error in the operation of either the Spanning Tree Protocol implementation running on the device or the management entity." ::= { begemotBridgeStpPortEntry 3 } begemotBridgeStpPortEnable OBJECT-TYPE SYNTAX INTEGER { enabled(1), disabled(2) } MAX-ACCESS read-write STATUS current DESCRIPTION "The administrative Spanning Tree Protocol state of the port - value of enabled(1) indicates that the port is participating in the Spanning Tree Protocol operation." ::= { begemotBridgeStpPortEntry 4 } begemotBridgeStpPortPathCost OBJECT-TYPE SYNTAX Integer32 (1..65535) MAX-ACCESS read-write STATUS current DESCRIPTION "The contribution of the path through this port, when the port is the Root Port, to the total cost of the path to the root bridge for this bridge." ::= { begemotBridgeStpPortEntry 5 } begemotBridgeStpPortDesignatedRoot OBJECT-TYPE SYNTAX BridgeId MAX-ACCESS read-only STATUS current DESCRIPTION "The unique Bridge Identifier of the bridge recorded as the root in the Root Identifier parameter of Configuration BPDUs transmitted by the Designated Bridge for the LAN to which the port is attached." ::= { begemotBridgeStpPortEntry 6 } begemotBridgeStpPortDesignatedCost OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "For a Designated port, the path cost (equal to the Root Path Cost of the bridge) offered to the LAN to which the port is attached otherwise the cost of the path to the Root offered by the Designated Port on the LAN to which this Port is attached." ::= { begemotBridgeStpPortEntry 7 } begemotBridgeStpPortDesignatedBridge OBJECT-TYPE SYNTAX BridgeId MAX-ACCESS read-only STATUS current DESCRIPTION "The unique Bridge Identifier of the bridge to which the port belongs, in the case when the port is a designated port, otherwise the bridge believed to be the Designated Bridge for the LAN to which this port is attached." ::= { begemotBridgeStpPortEntry 8 } begemotBridgeStpPortDesignatedPort OBJECT-TYPE SYNTAX BridgePortId MAX-ACCESS read-only STATUS current DESCRIPTION "The Port Identifier of the Bridge port, on the Designated Bridge, through which the Designated Bridge transmits the Configuration Message information stored by this port." ::= { begemotBridgeStpPortEntry 9 } begemotBridgeStpPortForwardTransitions OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times this port has transitioned from the Learning state to the Forwarding state." ::= { begemotBridgeStpPortEntry 10 } -- ---------------------------------------------------------- -- -- the Bridge STP extended ports table -- ---------------------------------------------------------- -- begemotBridgeStpExtPortTable OBJECT-TYPE SYNTAX SEQUENCE OF BegemotBridgeStpExtPortEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains port-specific Rapid Spanning Tree information for the bridge interface members." ::= { begemotBridgeStp 3 } begemotBridgeStpExtPortEntry OBJECT-TYPE SYNTAX BegemotBridgeStpExtPortEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of Rapid Spanning Tree information maintained by each bridge interface member." AUGMENTS { begemotBridgeStpPortEntry } ::= { begemotBridgeStpExtPortTable 1 } BegemotBridgeStpExtPortEntry ::= SEQUENCE { begemotBridgeStpPortProtocolMigration TruthValue, begemotBridgeStpPortAdminEdgePort TruthValue, begemotBridgeStpPortOperEdgePort TruthValue, begemotBridgeStpPortAdminPointToPoint INTEGER, begemotBridgeStpPortOperPointToPoint TruthValue, begemotBridgeStpPortAdminPathCost Integer32 } begemotBridgeStpPortProtocolMigration OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "When operating in RSTP (version 2) mode, writing true(1) to this object forces this port to transmit RSTP BPDUs. Any other operation on this object has no effect and it always returns false(2) when read." ::= { begemotBridgeStpExtPortEntry 1 } begemotBridgeStpPortAdminEdgePort OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The administrative value of the Edge Port parameter. A value of true(1) indicates that this port should be assumed as an edge-port, and a value of false(2) indicates that this port should be assumed as a non-edge-port. Setting this object will also cause the corresponding instance of begemotBridgeStpPortOperEdgePort to change to the same value. Note that even when this object's value is true, the value of the corresponding instance of begemotBridgeStpPortOperEdgePort can be false if a BPDU has been received. The value of this object MUST be retained across reinitializations of the management system." ::= { begemotBridgeStpExtPortEntry 2 } begemotBridgeStpPortOperEdgePort OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "The operational value of the Edge Port parameter. The object is initialized to the value of the corresponding instance of begemotBridgeStpPortAdminEdgePort. When the corresponding instance of begemotBridgeStpPortAdminEdgePort is set, this object will be changed as well. This object will also be changed to false on reception of a BPDU." ::= { begemotBridgeStpExtPortEntry 3 } begemotBridgeStpPortAdminPointToPoint OBJECT-TYPE SYNTAX INTEGER { forceTrue(0), forceFalse(1), auto(2) } MAX-ACCESS read-write STATUS current DESCRIPTION "The administrative point-to-point status of the LAN segment attached to this port, using the enumeration values of the IEEE 802.1w clause. A value of forceTrue(0) indicates that this port should always be treated as if it is connected to a point-to-point link. A value of forceFalse(1) indicates that this port should be treated as having a shared media connection. A value of auto(2) indicates that this port is considered to have a point-to-point link if it is an Aggregator and all of its members are aggregatable, or if the MAC entity is configured for full duplex operation, either through auto-negotiation or by management means. Manipulating this object changes the underlying adminPortToPortMAC. The value of this object MUST be retained across reinitializations of the management system." ::= { begemotBridgeStpExtPortEntry 4 } begemotBridgeStpPortOperPointToPoint OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "The operational point-to-point status of the LAN segment attached to this port. It indicates whether a port is considered to have a point-to-point connection. If adminPointToPointMAC is set to auto(2), then the value of operPointToPointMAC is determined in accordance with the specific procedures defined for the MAC entity concerned, as defined in IEEE 802.1w, clause 6.5. The value is determined dynamically; that is, it is re-evaluated whenever the value of adminPointToPointMAC changes, and whenever the specific procedures defined for the MAC entity evaluates a change in its point-to-point status." ::= { begemotBridgeStpExtPortEntry 5 } begemotBridgeStpPortAdminPathCost OBJECT-TYPE SYNTAX Integer32 (0..200000000) MAX-ACCESS read-write STATUS current DESCRIPTION "The administratively assigned value for the contribution of this port to the path cost of paths toward the spanning tree root. Writing a value of '0' assigns the automatically calculated default Path Cost value to the port. If the default Path Cost is being used, this object returns '0' when read. This complements the object begemotBridgeStpPortPathCost or begemotBridgeStpPortPathCost32, which returns the operational value of the path cost. The value of this object MUST be retained across reinitializations of the management system." ::= { begemotBridgeStpExtPortEntry 6 } -- ---------------------------------------------------------- -- -- the Bridge interface Transparent bridging table -- ---------------------------------------------------------- -- begemotBridgeTpTable OBJECT-TYPE SYNTAX SEQUENCE OF BegemotBridgeTpEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains information regarding transparent bridging for each bridge interface on the managed device." ::= { begemotBridgeTp 1 } begemotBridgeTpEntry OBJECT-TYPE SYNTAX BegemotBridgeTpEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of information regarding transparent bridging on a bridge interface." AUGMENTS { begemotBridgeBaseEntry } ::= { begemotBridgeTpTable 1 } BegemotBridgeTpEntry ::= SEQUENCE { begemotBridgeTpLearnedEntryDiscards Counter32, begemotBridgeTpAgingTime Integer32, begemotBridgeTpMaxAddresses Integer32 } begemotBridgeTpLearnedEntryDiscards OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of Forwarding Database entries that would have been learnt, but have been discarded due to Forwarding Address Table having reached its maximum entries limit." ::= { begemotBridgeTpEntry 1 } begemotBridgeTpAgingTime OBJECT-TYPE SYNTAX Integer32 (10..1000000) UNITS "seconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The timeout period in seconds before aging out dynamically learnt forwarding entries." ::= { begemotBridgeTpEntry 2 } begemotBridgeTpMaxAddresses OBJECT-TYPE SYNTAX Integer32 (1..10000) MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum number of entries that this bridge can learn in its Forwarding Address Table and use for making forwarding decisions." ::= { begemotBridgeTpEntry 3 } -- ---------------------------------------------------------- -- -- The Forwarding Database for Transparent Bridging interfaces -- ---------------------------------------------------------- -- begemotBridgeTpFdbTable OBJECT-TYPE SYNTAX SEQUENCE OF BegemotBridgeTpFdbEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains information about unicast entries for which the bridge interfaces have forwarding and/or filtering information. This information is used by the bridge interfaces to make forwarding decisions." ::= { begemotBridgeTp 2 } begemotBridgeTpFdbEntry OBJECT-TYPE SYNTAX BegemotBridgeTpFdbEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Information about a specific unicast MAC address for which the bridge interface has some forwarding and/or filtering information." INDEX { begemotBridgeBaseName, begemotBridgeTpFdbAddress } ::= { begemotBridgeTpFdbTable 1 } BegemotBridgeTpFdbEntry ::= SEQUENCE { begemotBridgeTpFdbAddress MacAddress, begemotBridgeTpFdbPort Integer32, begemotBridgeTpFdbStatus INTEGER } begemotBridgeTpFdbAddress OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-only STATUS current DESCRIPTION "A unicast MAC address for which the bridge has which the bridge interface has some forwarding and/or filtering information." ::= { begemotBridgeTpFdbEntry 1 } begemotBridgeTpFdbPort OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The port number of the bridge port on which a frame having a source address equal to the value of the corresponding instance of begemotBridgeTpFdbAddress has been seen." ::= { begemotBridgeTpFdbEntry 2 } begemotBridgeTpFdbStatus OBJECT-TYPE SYNTAX INTEGER { other(1), invalid(2), learned(3), self(4), mgmt(5) } MAX-ACCESS read-only STATUS current DESCRIPTION "The status of this entry. The meanings of the values are: other(1) - none of the following. invalid(2) - this entry is no longer valid (e.g., it was learned but has since aged out), but has not yet been flushed from the table. learned(3) - the value of the corresponding instance of begemotBridgeTpFdbPort was learned, and is being used. self(4) - the value of the corresponding instance of begemotBridgeTpFdbAddress represents one of the bridge's addresses. The corresponding instance of begemotBridgeTpFdbPort indicates which of the bridge's ports has this address. mgmt(5) - the value of the corresponding instance of begemotBridgeTpFdbAddress has been added to the bridge's Forwarding Database by some management means." ::= { begemotBridgeTpFdbEntry 3 } -- ---------------------------------------------------------- -- -- Ports table for Transparent Bridging interfaces -- ---------------------------------------------------------- -- begemotBridgeTpPortTable OBJECT-TYPE SYNTAX SEQUENCE OF BegemotBridgeTpPortEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains information about every bridge port, member of a bridge interface, associated with the transparent bridging function of the bridge." ::= { begemotBridgeTp 3 } begemotBridgeTpPortEntry OBJECT-TYPE SYNTAX BegemotBridgeTpPortEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of information about every bridge port, member of a bridge interface, associated with the bridge's transparent bridging function." INDEX { begemotBridgeBaseName, begemotBridgeBasePortIfIndex } ::= { begemotBridgeTpPortTable 1 } BegemotBridgeTpPortEntry ::= SEQUENCE { begemotBridgeTpPort Integer32, begemotBridgeTpPortMaxInfo Integer32, begemotBridgeTpPortInFrames Counter32, begemotBridgeTpPortOutFrames Counter32, begemotBridgeTpPortInDiscards Counter32 } begemotBridgeTpPort OBJECT-TYPE SYNTAX Integer32 (1..65535) MAX-ACCESS read-only STATUS current DESCRIPTION "The system interface index of the port for which this entry contains Transparent bridging management information." ::= { begemotBridgeTpPortEntry 1 } begemotBridgeTpPortMaxInfo OBJECT-TYPE SYNTAX Integer32 UNITS "bytes" MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum size of the INFO (non-MAC) field that this port will receive or transmit." ::= { begemotBridgeTpPortEntry 2 } begemotBridgeTpPortInFrames OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames that have been received by this port from its segment. Note that a frame received on the interface corresponding to this port is only counted by this object if and only if it is for a protocol being processed by the local bridging function, including bridge management frames." ::= { begemotBridgeTpPortEntry 3 } begemotBridgeTpPortOutFrames OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames that have been transmitted by this port to its segment. Note that a frame transmitted on the interface corresponding to this port is only counted by this object if and only if it is for a protocol being processed by the local bridging function, including bridge management frames." ::= { begemotBridgeTpPortEntry 4 } begemotBridgeTpPortInDiscards OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "Count of received valid frames that were discarded (i.e., filtered) by the Forwarding Process." ::= { begemotBridgeTpPortEntry 5 } -- ---------------------------------------------------------- -- -- the begemotBridgePf objects -- ---------------------------------------------------------- -- begemotBridgePfilStatus OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "Indicates whether packet filtering by some firewall package is enabled on the bridge interface." ::= { begemotBridgePf 1 } begemotBridgePfilMembers OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "A value of true(1) indicates that packet filtering is enabled on both incoming and outgoing bridge member interfaces." ::= { begemotBridgePf 2 } begemotBridgePfilIpOnly OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "This value controls the handling of non-IP packets which are not passed on for further processing to a firewall package. A value of false(0) indicates that all non-IP Ethernet frames are passed unconditionally." ::= { begemotBridgePf 3 } begemotBridgeLayer2PfStatus OBJECT-TYPE SYNTAX INTEGER { enabled(1), disabled(2) } MAX-ACCESS read-write STATUS current DESCRIPTION "This value indicates whether layer2 filtering by a firewall package is enabled for bridge interfaces." ::= { begemotBridgePf 4 } -- ---------------------------------------------------------- -- -- the begemotBridgeConfigObjects objects -- ---------------------------------------------------------- -- begemotBridgeDefaultBridgeIf OBJECT-TYPE SYNTAX BridgeIfNameOrEmpty MAX-ACCESS read-write STATUS current DESCRIPTION "The name of the bridge interface that will be managed via objects in IETF BRIDGE-MIB (RFC4188). If the object's value is set to an empty string, bridge interfaces will only be managed via objects in this MIB module." DEFVAL { "bridge0" } ::= { begemotBridgeConfigObjects 1 } begemotBridgeDataUpdate OBJECT-TYPE SYNTAX Timeout (1..300) UNITS "seconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum age in seconds of the cached data." DEFVAL { 10 } ::= { begemotBridgeConfigObjects 2 } begemotBridgeDataPoll OBJECT-TYPE SYNTAX Timeout (1..3600) UNITS "seconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The polling rate of data when the module is idle." DEFVAL { 300 } ::= { begemotBridgeConfigObjects 3 } -- ---------------------------------------------------------- -- -- Notifications for the Spanning Tree Protocol -- ---------------------------------------------------------- -- begemotBridgeNewRoot NOTIFICATION-TYPE OBJECTS { begemotBridgeBaseName } STATUS current DESCRIPTION "The begemotBridgeNewRoot trap indicates that one of the bridge interfaces on the sending agent's device has become the new root of the spanning tree topology it is participating in." ::= { begemotBridgeNotifications 1 } begemotBridgeTopologyChange NOTIFICATION-TYPE OBJECTS { begemotBridgeBaseName } STATUS current DESCRIPTION "A begemotBridgeTopologyChange trap is send when a member port on one of the bridge interfaces, monitored by the agent, transitions from the Learning state to the Forwarding state, or from the Forwarding state to the Blocking state. The trap is not sent if a begemotBridgeNewRoot trap is sent for the same transition." ::= { begemotBridgeNotifications 2 } END diff --git a/usr.sbin/bsnmpd/modules/snmp_bridge/BRIDGE-MIB.txt b/usr.sbin/bsnmpd/modules/snmp_bridge/BRIDGE-MIB.txt index 9f87b6557c0a..345117db2e39 100644 --- a/usr.sbin/bsnmpd/modules/snmp_bridge/BRIDGE-MIB.txt +++ b/usr.sbin/bsnmpd/modules/snmp_bridge/BRIDGE-MIB.txt @@ -1,1483 +1,1481 @@ -- -- Copyright (C) The Internet Society (2005). -- -- This document is subject to the rights, licenses and restrictions -- contained in BCP 78, and except as set forth therein, the authors -- retain all their rights. -- -- This document and the information contained herein are provided on an -- "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS -- OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET -- ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE -- INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED -- WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. -- --- $FreeBSD$ --- BRIDGE-MIB DEFINITIONS ::= BEGIN -- ---------------------------------------------------------- -- -- MIB for IEEE 802.1D devices -- ---------------------------------------------------------- -- IMPORTS MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Counter32, Integer32, TimeTicks, mib-2 FROM SNMPv2-SMI TEXTUAL-CONVENTION, MacAddress FROM SNMPv2-TC MODULE-COMPLIANCE, OBJECT-GROUP, NOTIFICATION-GROUP FROM SNMPv2-CONF InterfaceIndex FROM IF-MIB ; dot1dBridge MODULE-IDENTITY LAST-UPDATED "200509190000Z" ORGANIZATION "IETF Bridge MIB Working Group" CONTACT-INFO "Email: bridge-mib@ietf.org K.C. Norseth (Editor) L-3 Communications Tel: +1 801-594-2809 Email: kenyon.c.norseth@L-3com.com Postal: 640 N. 2200 West. Salt Lake City, Utah 84116-0850 Les Bell (Editor) 3Com Europe Limited Phone: +44 1442 438025 Email: elbell@ntlworld.com Postal: 3Com Centre, Boundary Way Hemel Hempstead Herts. HP2 7YU UK Send comments to " DESCRIPTION "The Bridge MIB module for managing devices that support IEEE 802.1D. Copyright (C) The Internet Society (2005). This version of this MIB module is part of RFC 4188; see the RFC itself for full legal notices." REVISION "200509190000Z" DESCRIPTION "Third revision, published as part of RFC 4188. The MIB module has been converted to SMIv2 format. Conformance statements have been added and some description and reference clauses have been updated. The object dot1dStpPortPathCost32 was added to support IEEE 802.1t and the permissible values of dot1dStpPriority and dot1dStpPortPriority have been clarified for bridges supporting IEEE 802.1t or IEEE 802.1w. The interpretation of dot1dStpTimeSinceTopologyChange has been clarified for bridges supporting the Rapid Spanning Tree Protocol (RSTP)." REVISION "199307310000Z" DESCRIPTION "Second revision, published as part of RFC 1493." REVISION "199112310000Z" DESCRIPTION "Initial revision, published as part of RFC 1286." ::= { mib-2 17 } -- ---------------------------------------------------------- -- -- Textual Conventions -- ---------------------------------------------------------- -- BridgeId ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "The Bridge-Identifier, as used in the Spanning Tree Protocol, to uniquely identify a bridge. Its first two octets (in network byte order) contain a priority value, and its last 6 octets contain the MAC address used to refer to a bridge in a unique fashion (typically, the numerically smallest MAC address of all ports on the bridge)." SYNTAX OCTET STRING (SIZE (8)) Timeout ::= TEXTUAL-CONVENTION DISPLAY-HINT "d" STATUS current DESCRIPTION "A Spanning Tree Protocol (STP) timer in units of 1/100 seconds. Several objects in this MIB module represent values of timers used by the Spanning Tree Protocol. In this MIB, these timers have values in units of hundredths of a second (i.e., 1/100 secs). These timers, when stored in a Spanning Tree Protocol's BPDU, are in units of 1/256 seconds. Note, however, that 802.1D-1998 specifies a settable granularity of no more than one second for these timers. To avoid ambiguity, a conversion algorithm is defined below for converting between the different units, which ensures a timer's value is not distorted by multiple conversions. To convert a Timeout value into a value in units of 1/256 seconds, the following algorithm should be used: b = floor( (n * 256) / 100) where: floor = quotient [ignore remainder] n is the value in 1/100 second units b is the value in 1/256 second units To convert the value from 1/256 second units back to 1/100 seconds, the following algorithm should be used: n = ceiling( (b * 100) / 256) where: ceiling = quotient [if remainder is 0], or quotient + 1 [if remainder is nonzero] n is the value in 1/100 second units b is the value in 1/256 second units Note: it is important that the arithmetic operations are done in the order specified (i.e., multiply first, divide second)." SYNTAX Integer32 -- ---------------------------------------------------------- -- -- subtrees in the Bridge MIB -- ---------------------------------------------------------- -- dot1dNotifications OBJECT IDENTIFIER ::= { dot1dBridge 0 } dot1dBase OBJECT IDENTIFIER ::= { dot1dBridge 1 } dot1dStp OBJECT IDENTIFIER ::= { dot1dBridge 2 } dot1dSr OBJECT IDENTIFIER ::= { dot1dBridge 3 } -- documented in RFC 1525 dot1dTp OBJECT IDENTIFIER ::= { dot1dBridge 4 } dot1dStatic OBJECT IDENTIFIER ::= { dot1dBridge 5 } -- Subtrees used by Bridge MIB Extensions: -- pBridgeMIB MODULE-IDENTITY ::= { dot1dBridge 6 } -- qBridgeMIB MODULE-IDENTITY ::= { dot1dBridge 7 } -- Note that the practice of registering related MIB modules -- below dot1dBridge has been discouraged since there is no -- robust mechanism to track such registrations. dot1dConformance OBJECT IDENTIFIER ::= { dot1dBridge 8 } -- ---------------------------------------------------------- -- -- the dot1dBase subtree -- ---------------------------------------------------------- -- -- Implementation of the dot1dBase subtree is mandatory for all -- bridges. -- ---------------------------------------------------------- -- dot1dBaseBridgeAddress OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-only STATUS current DESCRIPTION "The MAC address used by this bridge when it must be referred to in a unique fashion. It is recommended that this be the numerically smallest MAC address of all ports that belong to this bridge. However, it is only required to be unique. When concatenated with dot1dStpPriority, a unique BridgeIdentifier is formed, which is used in the Spanning Tree Protocol." REFERENCE "IEEE 802.1D-1998: clauses 14.4.1.1.3 and 7.12.5" ::= { dot1dBase 1 } dot1dBaseNumPorts OBJECT-TYPE SYNTAX Integer32 UNITS "ports" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of ports controlled by this bridging entity." REFERENCE "IEEE 802.1D-1998: clause 14.4.1.1.3" ::= { dot1dBase 2 } dot1dBaseType OBJECT-TYPE SYNTAX INTEGER { unknown(1), transparent-only(2), sourceroute-only(3), srt(4) } MAX-ACCESS read-only STATUS current DESCRIPTION "Indicates what type of bridging this bridge can perform. If a bridge is actually performing a certain type of bridging, this will be indicated by entries in the port table for the given type." ::= { dot1dBase 3 } -- ---------------------------------------------------------- -- -- The Generic Bridge Port Table -- ---------------------------------------------------------- -- dot1dBasePortTable OBJECT-TYPE SYNTAX SEQUENCE OF Dot1dBasePortEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains generic information about every port that is associated with this bridge. Transparent, source-route, and srt ports are included." ::= { dot1dBase 4 } dot1dBasePortEntry OBJECT-TYPE SYNTAX Dot1dBasePortEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of information for each port of the bridge." REFERENCE "IEEE 802.1D-1998: clause 14.4.2, 14.6.1" INDEX { dot1dBasePort } ::= { dot1dBasePortTable 1 } Dot1dBasePortEntry ::= SEQUENCE { dot1dBasePort Integer32, dot1dBasePortIfIndex InterfaceIndex, dot1dBasePortCircuit OBJECT IDENTIFIER, dot1dBasePortDelayExceededDiscards Counter32, dot1dBasePortMtuExceededDiscards Counter32 } dot1dBasePort OBJECT-TYPE SYNTAX Integer32 (1..65535) MAX-ACCESS read-only STATUS current DESCRIPTION "The port number of the port for which this entry contains bridge management information." ::= { dot1dBasePortEntry 1 } dot1dBasePortIfIndex OBJECT-TYPE SYNTAX InterfaceIndex MAX-ACCESS read-only STATUS current DESCRIPTION "The value of the instance of the ifIndex object, defined in IF-MIB, for the interface corresponding to this port." ::= { dot1dBasePortEntry 2 } dot1dBasePortCircuit OBJECT-TYPE SYNTAX OBJECT IDENTIFIER MAX-ACCESS read-only STATUS current DESCRIPTION "For a port that (potentially) has the same value of dot1dBasePortIfIndex as another port on the same bridge. This object contains the name of an object instance unique to this port. For example, in the case where multiple ports correspond one-to-one with multiple X.25 virtual circuits, this value might identify an (e.g., the first) object instance associated with the X.25 virtual circuit corresponding to this port. For a port which has a unique value of dot1dBasePortIfIndex, this object can have the value { 0 0 }." ::= { dot1dBasePortEntry 3 } dot1dBasePortDelayExceededDiscards OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames discarded by this port due to excessive transit delay through the bridge. It is incremented by both transparent and source route bridges." REFERENCE "IEEE 802.1D-1998: clause 14.6.1.1.3" ::= { dot1dBasePortEntry 4 } dot1dBasePortMtuExceededDiscards OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames discarded by this port due to an excessive size. It is incremented by both transparent and source route bridges." REFERENCE "IEEE 802.1D-1998: clause 14.6.1.1.3" ::= { dot1dBasePortEntry 5 } -- ---------------------------------------------------------- -- -- the dot1dStp subtree -- ---------------------------------------------------------- -- -- Implementation of the dot1dStp subtree is optional. It is -- implemented by those bridges that support the Spanning Tree -- Protocol. -- ---------------------------------------------------------- -- dot1dStpProtocolSpecification OBJECT-TYPE SYNTAX INTEGER { unknown(1), decLb100(2), ieee8021d(3) } MAX-ACCESS read-only STATUS current DESCRIPTION "An indication of what version of the Spanning Tree Protocol is being run. The value 'decLb100(2)' indicates the DEC LANbridge 100 Spanning Tree protocol. IEEE 802.1D implementations will return 'ieee8021d(3)'. If future versions of the IEEE Spanning Tree Protocol that are incompatible with the current version are released a new value will be defined." ::= { dot1dStp 1 } dot1dStpPriority OBJECT-TYPE SYNTAX Integer32 (0..65535) MAX-ACCESS read-write STATUS current DESCRIPTION "The value of the write-able portion of the Bridge ID (i.e., the first two octets of the (8 octet long) Bridge ID). The other (last) 6 octets of the Bridge ID are given by the value of dot1dBaseBridgeAddress. On bridges supporting IEEE 802.1t or IEEE 802.1w, permissible values are 0-61440, in steps of 4096." REFERENCE "IEEE 802.1D-1998 clause 8.10.2, Table 8-4, IEEE 802.1t clause 8.10.2, Table 8-4, clause 14.3." ::= { dot1dStp 2 } dot1dStpTimeSinceTopologyChange OBJECT-TYPE SYNTAX TimeTicks UNITS "centi-seconds" MAX-ACCESS read-only STATUS current DESCRIPTION "The time (in hundredths of a second) since the last time a topology change was detected by the bridge entity. For RSTP, this reports the time since the tcWhile timer for any port on this Bridge was nonzero." REFERENCE "IEEE 802.1D-1998 clause 14.8.1.1., IEEE 802.1w clause 14.8.1.1." ::= { dot1dStp 3 } dot1dStpTopChanges OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of topology changes detected by this bridge since the management entity was last reset or initialized." REFERENCE "IEEE 802.1D-1998 clause 14.8.1.1." ::= { dot1dStp 4 } dot1dStpDesignatedRoot OBJECT-TYPE SYNTAX BridgeId MAX-ACCESS read-only STATUS current DESCRIPTION "The bridge identifier of the root of the spanning tree, as determined by the Spanning Tree Protocol, as executed by this node. This value is used as the Root Identifier parameter in all Configuration Bridge PDUs originated by this node." REFERENCE "IEEE 802.1D-1998: clause 8.5.3.1" ::= { dot1dStp 5 } dot1dStpRootCost OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The cost of the path to the root as seen from this bridge." REFERENCE "IEEE 802.1D-1998: clause 8.5.3.2" ::= { dot1dStp 6 } dot1dStpRootPort OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The port number of the port that offers the lowest cost path from this bridge to the root bridge." REFERENCE "IEEE 802.1D-1998: clause 8.5.3.3" ::= { dot1dStp 7 } dot1dStpMaxAge OBJECT-TYPE SYNTAX Timeout UNITS "centi-seconds" MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum age of Spanning Tree Protocol information learned from the network on any port before it is discarded, in units of hundredths of a second. This is the actual value that this bridge is currently using." REFERENCE "IEEE 802.1D-1998: clause 8.5.3.4" ::= { dot1dStp 8 } dot1dStpHelloTime OBJECT-TYPE SYNTAX Timeout UNITS "centi-seconds" MAX-ACCESS read-only STATUS current DESCRIPTION "The amount of time between the transmission of Configuration bridge PDUs by this node on any port when it is the root of the spanning tree, or trying to become so, in units of hundredths of a second. This is the actual value that this bridge is currently using." REFERENCE "IEEE 802.1D-1998: clause 8.5.3.5" ::= { dot1dStp 9 } dot1dStpHoldTime OBJECT-TYPE SYNTAX Integer32 UNITS "centi-seconds" MAX-ACCESS read-only STATUS current DESCRIPTION "This time value determines the interval length during which no more than two Configuration bridge PDUs shall be transmitted by this node, in units of hundredths of a second." REFERENCE "IEEE 802.1D-1998: clause 8.5.3.14" ::= { dot1dStp 10 } dot1dStpForwardDelay OBJECT-TYPE SYNTAX Timeout UNITS "centi-seconds" MAX-ACCESS read-only STATUS current DESCRIPTION "This time value, measured in units of hundredths of a second, controls how fast a port changes its spanning state when moving towards the Forwarding state. The value determines how long the port stays in each of the Listening and Learning states, which precede the Forwarding state. This value is also used when a topology change has been detected and is underway, to age all dynamic entries in the Forwarding Database. [Note that this value is the one that this bridge is currently using, in contrast to dot1dStpBridgeForwardDelay, which is the value that this bridge and all others would start using if/when this bridge were to become the root.]" REFERENCE "IEEE 802.1D-1998: clause 8.5.3.6" ::= { dot1dStp 11 } dot1dStpBridgeMaxAge OBJECT-TYPE SYNTAX Timeout (600..4000) UNITS "centi-seconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The value that all bridges use for MaxAge when this bridge is acting as the root. Note that 802.1D-1998 specifies that the range for this parameter is related to the value of dot1dStpBridgeHelloTime. The granularity of this timer is specified by 802.1D-1998 to be 1 second. An agent may return a badValue error if a set is attempted to a value that is not a whole number of seconds." REFERENCE "IEEE 802.1D-1998: clause 8.5.3.8" ::= { dot1dStp 12 } dot1dStpBridgeHelloTime OBJECT-TYPE SYNTAX Timeout (100..1000) UNITS "centi-seconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The value that all bridges use for HelloTime when this bridge is acting as the root. The granularity of this timer is specified by 802.1D-1998 to be 1 second. An agent may return a badValue error if a set is attempted to a value that is not a whole number of seconds." REFERENCE "IEEE 802.1D-1998: clause 8.5.3.9" ::= { dot1dStp 13 } dot1dStpBridgeForwardDelay OBJECT-TYPE SYNTAX Timeout (400..3000) UNITS "centi-seconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The value that all bridges use for ForwardDelay when this bridge is acting as the root. Note that 802.1D-1998 specifies that the range for this parameter is related to the value of dot1dStpBridgeMaxAge. The granularity of this timer is specified by 802.1D-1998 to be 1 second. An agent may return a badValue error if a set is attempted to a value that is not a whole number of seconds." REFERENCE "IEEE 802.1D-1998: clause 8.5.3.10" ::= { dot1dStp 14 } -- ---------------------------------------------------------- -- -- The Spanning Tree Port Table -- ---------------------------------------------------------- -- dot1dStpPortTable OBJECT-TYPE SYNTAX SEQUENCE OF Dot1dStpPortEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains port-specific information for the Spanning Tree Protocol." ::= { dot1dStp 15 } dot1dStpPortEntry OBJECT-TYPE SYNTAX Dot1dStpPortEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of information maintained by every port about the Spanning Tree Protocol state for that port." INDEX { dot1dStpPort } ::= { dot1dStpPortTable 1 } Dot1dStpPortEntry ::= SEQUENCE { dot1dStpPort Integer32, dot1dStpPortPriority Integer32, dot1dStpPortState INTEGER, dot1dStpPortEnable INTEGER, dot1dStpPortPathCost Integer32, dot1dStpPortDesignatedRoot BridgeId, dot1dStpPortDesignatedCost Integer32, dot1dStpPortDesignatedBridge BridgeId, dot1dStpPortDesignatedPort OCTET STRING, dot1dStpPortForwardTransitions Counter32, dot1dStpPortPathCost32 Integer32 } dot1dStpPort OBJECT-TYPE SYNTAX Integer32 (1..65535) MAX-ACCESS read-only STATUS current DESCRIPTION "The port number of the port for which this entry contains Spanning Tree Protocol management information." REFERENCE "IEEE 802.1D-1998: clause 14.8.2.1.2" ::= { dot1dStpPortEntry 1 } dot1dStpPortPriority OBJECT-TYPE SYNTAX Integer32 (0..255) MAX-ACCESS read-write STATUS current DESCRIPTION "The value of the priority field that is contained in the first (in network byte order) octet of the (2 octet long) Port ID. The other octet of the Port ID is given by the value of dot1dStpPort. On bridges supporting IEEE 802.1t or IEEE 802.1w, permissible values are 0-240, in steps of 16." REFERENCE "IEEE 802.1D-1998 clause 8.10.2, Table 8-4, IEEE 802.1t clause 8.10.2, Table 8-4, clause 14.3." ::= { dot1dStpPortEntry 2 } dot1dStpPortState OBJECT-TYPE SYNTAX INTEGER { disabled(1), blocking(2), listening(3), learning(4), forwarding(5), broken(6) } MAX-ACCESS read-only STATUS current DESCRIPTION "The port's current state, as defined by application of the Spanning Tree Protocol. This state controls what action a port takes on reception of a frame. If the bridge has detected a port that is malfunctioning, it will place that port into the broken(6) state. For ports that are disabled (see dot1dStpPortEnable), this object will have a value of disabled(1)." REFERENCE "IEEE 802.1D-1998: clause 8.5.5.2" ::= { dot1dStpPortEntry 3 } dot1dStpPortEnable OBJECT-TYPE SYNTAX INTEGER { enabled(1), disabled(2) } MAX-ACCESS read-write STATUS current DESCRIPTION "The enabled/disabled status of the port." REFERENCE "IEEE 802.1D-1998: clause 8.5.5.2" ::= { dot1dStpPortEntry 4 } dot1dStpPortPathCost OBJECT-TYPE SYNTAX Integer32 (1..65535) MAX-ACCESS read-write STATUS current DESCRIPTION "The contribution of this port to the path cost of paths towards the spanning tree root which include this port. 802.1D-1998 recommends that the default value of this parameter be in inverse proportion to the speed of the attached LAN. New implementations should support dot1dStpPortPathCost32. If the port path costs exceeds the maximum value of this object then this object should report the maximum value, namely 65535. Applications should try to read the dot1dStpPortPathCost32 object if this object reports the maximum value." REFERENCE "IEEE 802.1D-1998: clause 8.5.5.3" ::= { dot1dStpPortEntry 5 } dot1dStpPortDesignatedRoot OBJECT-TYPE SYNTAX BridgeId MAX-ACCESS read-only STATUS current DESCRIPTION "The unique Bridge Identifier of the Bridge recorded as the Root in the Configuration BPDUs transmitted by the Designated Bridge for the segment to which the port is attached." REFERENCE "IEEE 802.1D-1998: clause 8.5.5.4" ::= { dot1dStpPortEntry 6 } dot1dStpPortDesignatedCost OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The path cost of the Designated Port of the segment connected to this port. This value is compared to the Root Path Cost field in received bridge PDUs." REFERENCE "IEEE 802.1D-1998: clause 8.5.5.5" ::= { dot1dStpPortEntry 7 } dot1dStpPortDesignatedBridge OBJECT-TYPE SYNTAX BridgeId MAX-ACCESS read-only STATUS current DESCRIPTION "The Bridge Identifier of the bridge that this port considers to be the Designated Bridge for this port's segment." REFERENCE "IEEE 802.1D-1998: clause 8.5.5.6" ::= { dot1dStpPortEntry 8 } dot1dStpPortDesignatedPort OBJECT-TYPE SYNTAX OCTET STRING (SIZE (2)) MAX-ACCESS read-only STATUS current DESCRIPTION "The Port Identifier of the port on the Designated Bridge for this port's segment." REFERENCE "IEEE 802.1D-1998: clause 8.5.5.7" ::= { dot1dStpPortEntry 9 } dot1dStpPortForwardTransitions OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times this port has transitioned from the Learning state to the Forwarding state." ::= { dot1dStpPortEntry 10 } dot1dStpPortPathCost32 OBJECT-TYPE SYNTAX Integer32 (1..200000000) MAX-ACCESS read-write STATUS current DESCRIPTION "The contribution of this port to the path cost of paths towards the spanning tree root which include this port. 802.1D-1998 recommends that the default value of this parameter be in inverse proportion to the speed of the attached LAN. This object replaces dot1dStpPortPathCost to support IEEE 802.1t." REFERENCE "IEEE 802.1t clause 8.10.2, Table 8-5." ::= { dot1dStpPortEntry 11 } -- ---------------------------------------------------------- -- -- the dot1dTp subtree -- ---------------------------------------------------------- -- -- Implementation of the dot1dTp subtree is optional. It is -- implemented by those bridges that support the transparent -- bridging mode. A transparent or SRT bridge will implement -- this subtree. -- ---------------------------------------------------------- -- dot1dTpLearnedEntryDiscards OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The total number of Forwarding Database entries that have been or would have been learned, but have been discarded due to a lack of storage space in the Forwarding Database. If this counter is increasing, it indicates that the Forwarding Database is regularly becoming full (a condition that has unpleasant performance effects on the subnetwork). If this counter has a significant value but is not presently increasing, it indicates that the problem has been occurring but is not persistent." REFERENCE "IEEE 802.1D-1998: clause 14.7.1.1.3" ::= { dot1dTp 1 } dot1dTpAgingTime OBJECT-TYPE SYNTAX Integer32 (10..1000000) UNITS "seconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The timeout period in seconds for aging out dynamically-learned forwarding information. 802.1D-1998 recommends a default of 300 seconds." REFERENCE "IEEE 802.1D-1998: clause 14.7.1.1.3" ::= { dot1dTp 2 } -- ---------------------------------------------------------- -- -- The Forwarding Database for Transparent Bridges -- ---------------------------------------------------------- -- dot1dTpFdbTable OBJECT-TYPE SYNTAX SEQUENCE OF Dot1dTpFdbEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains information about unicast entries for which the bridge has forwarding and/or filtering information. This information is used by the transparent bridging function in determining how to propagate a received frame." ::= { dot1dTp 3 } dot1dTpFdbEntry OBJECT-TYPE SYNTAX Dot1dTpFdbEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Information about a specific unicast MAC address for which the bridge has some forwarding and/or filtering information." INDEX { dot1dTpFdbAddress } ::= { dot1dTpFdbTable 1 } Dot1dTpFdbEntry ::= SEQUENCE { dot1dTpFdbAddress MacAddress, dot1dTpFdbPort Integer32, dot1dTpFdbStatus INTEGER } dot1dTpFdbAddress OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-only STATUS current DESCRIPTION "A unicast MAC address for which the bridge has forwarding and/or filtering information." REFERENCE "IEEE 802.1D-1998: clause 7.9.1, 7.9.2" ::= { dot1dTpFdbEntry 1 } dot1dTpFdbPort OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "Either the value '0', or the port number of the port on which a frame having a source address equal to the value of the corresponding instance of dot1dTpFdbAddress has been seen. A value of '0' indicates that the port number has not been learned, but that the bridge does have some forwarding/filtering information about this address (e.g., in the dot1dStaticTable). Implementors are encouraged to assign the port value to this object whenever it is learned, even for addresses for which the corresponding value of dot1dTpFdbStatus is not learned(3)." ::= { dot1dTpFdbEntry 2 } dot1dTpFdbStatus OBJECT-TYPE SYNTAX INTEGER { other(1), invalid(2), learned(3), self(4), mgmt(5) } MAX-ACCESS read-only STATUS current DESCRIPTION "The status of this entry. The meanings of the values are: other(1) - none of the following. This would include the case where some other MIB object (not the corresponding instance of dot1dTpFdbPort, nor an entry in the dot1dStaticTable) is being used to determine if and how frames addressed to the value of the corresponding instance of dot1dTpFdbAddress are being forwarded. invalid(2) - this entry is no longer valid (e.g., it was learned but has since aged out), but has not yet been flushed from the table. learned(3) - the value of the corresponding instance of dot1dTpFdbPort was learned, and is being used. self(4) - the value of the corresponding instance of dot1dTpFdbAddress represents one of the bridge's addresses. The corresponding instance of dot1dTpFdbPort indicates which of the bridge's ports has this address. mgmt(5) - the value of the corresponding instance of dot1dTpFdbAddress is also the value of an existing instance of dot1dStaticAddress." ::= { dot1dTpFdbEntry 3 } -- ---------------------------------------------------------- -- -- Port Table for Transparent Bridges -- ---------------------------------------------------------- -- dot1dTpPortTable OBJECT-TYPE SYNTAX SEQUENCE OF Dot1dTpPortEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains information about every port that is associated with this transparent bridge." ::= { dot1dTp 4 } dot1dTpPortEntry OBJECT-TYPE SYNTAX Dot1dTpPortEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of information for each port of a transparent bridge." INDEX { dot1dTpPort } ::= { dot1dTpPortTable 1 } Dot1dTpPortEntry ::= SEQUENCE { dot1dTpPort Integer32, dot1dTpPortMaxInfo Integer32, dot1dTpPortInFrames Counter32, dot1dTpPortOutFrames Counter32, dot1dTpPortInDiscards Counter32 } dot1dTpPort OBJECT-TYPE SYNTAX Integer32 (1..65535) MAX-ACCESS read-only STATUS current DESCRIPTION "The port number of the port for which this entry contains Transparent bridging management information." ::= { dot1dTpPortEntry 1 } -- It would be nice if we could use ifMtu as the size of the -- largest INFO field, but we can't because ifMtu is defined -- to be the size that the (inter-)network layer can use, which -- can differ from the MAC layer (especially if several layers -- of encapsulation are used). dot1dTpPortMaxInfo OBJECT-TYPE SYNTAX Integer32 UNITS "bytes" MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum size of the INFO (non-MAC) field that this port will receive or transmit." ::= { dot1dTpPortEntry 2 } dot1dTpPortInFrames OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames that have been received by this port from its segment. Note that a frame received on the interface corresponding to this port is only counted by this object if and only if it is for a protocol being processed by the local bridging function, including bridge management frames." REFERENCE "IEEE 802.1D-1998: clause 14.6.1.1.3" ::= { dot1dTpPortEntry 3 } dot1dTpPortOutFrames OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames that have been transmitted by this port to its segment. Note that a frame transmitted on the interface corresponding to this port is only counted by this object if and only if it is for a protocol being processed by the local bridging function, including bridge management frames." REFERENCE "IEEE 802.1D-1998: clause 14.6.1.1.3" ::= { dot1dTpPortEntry 4 } dot1dTpPortInDiscards OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "Count of received valid frames that were discarded (i.e., filtered) by the Forwarding Process." REFERENCE "IEEE 802.1D-1998: clause 14.6.1.1.3" ::= { dot1dTpPortEntry 5 } -- ---------------------------------------------------------- -- -- The Static (Destination-Address Filtering) Database -- ---------------------------------------------------------- -- -- Implementation of this subtree is optional. -- ---------------------------------------------------------- -- dot1dStaticTable OBJECT-TYPE SYNTAX SEQUENCE OF Dot1dStaticEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table containing filtering information configured into the bridge by (local or network) management specifying the set of ports to which frames received from specific ports and containing specific destination addresses are allowed to be forwarded. The value of zero in this table, as the port number from which frames with a specific destination address are received, is used to specify all ports for which there is no specific entry in this table for that particular destination address. Entries are valid for unicast and for group/broadcast addresses." REFERENCE "IEEE 802.1D-1998: clause 14.7.2" ::= { dot1dStatic 1 } dot1dStaticEntry OBJECT-TYPE SYNTAX Dot1dStaticEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Filtering information configured into the bridge by (local or network) management specifying the set of ports to which frames received from a specific port and containing a specific destination address are allowed to be forwarded." REFERENCE "IEEE 802.1D-1998: clause 14.7.2" INDEX { dot1dStaticAddress, dot1dStaticReceivePort } ::= { dot1dStaticTable 1 } Dot1dStaticEntry ::= SEQUENCE { dot1dStaticAddress MacAddress, dot1dStaticReceivePort Integer32, dot1dStaticAllowedToGoTo OCTET STRING, dot1dStaticStatus INTEGER } dot1dStaticAddress OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-create STATUS current DESCRIPTION "The destination MAC address in a frame to which this entry's filtering information applies. This object can take the value of a unicast address, a group address, or the broadcast address." REFERENCE "IEEE 802.1D-1998: clause 7.9.1, 7.9.2" ::= { dot1dStaticEntry 1 } dot1dStaticReceivePort OBJECT-TYPE SYNTAX Integer32 (0..65535) MAX-ACCESS read-create STATUS current DESCRIPTION "Either the value '0', or the port number of the port from which a frame must be received in order for this entry's filtering information to apply. A value of zero indicates that this entry applies on all ports of the bridge for which there is no other applicable entry." ::= { dot1dStaticEntry 2 } dot1dStaticAllowedToGoTo OBJECT-TYPE SYNTAX OCTET STRING (SIZE (0..512)) MAX-ACCESS read-create STATUS current DESCRIPTION "The set of ports to which frames received from a specific port and destined for a specific MAC address, are allowed to be forwarded. Each octet within the value of this object specifies a set of eight ports, with the first octet specifying ports 1 through 8, the second octet specifying ports 9 through 16, etc. Within each octet, the most significant bit represents the lowest numbered port, and the least significant bit represents the highest numbered port. Thus, each port of the bridge is represented by a single bit within the value of this object. If that bit has a value of '1', then that port is included in the set of ports; the port is not included if its bit has a value of '0'. (Note that the setting of the bit corresponding to the port from which a frame is received is irrelevant.) The default value of this object is a string of ones of appropriate length. The value of this object may exceed the required minimum maximum message size of some SNMP transport (484 bytes, in the case of SNMP over UDP, see RFC 3417, section 3.2). SNMP engines on bridges supporting a large number of ports must support appropriate maximum message sizes." ::= { dot1dStaticEntry 3 } dot1dStaticStatus OBJECT-TYPE SYNTAX INTEGER { other(1), invalid(2), permanent(3), deleteOnReset(4), deleteOnTimeout(5) } MAX-ACCESS read-create STATUS current DESCRIPTION "This object indicates the status of this entry. The default value is permanent(3). other(1) - this entry is currently in use but the conditions under which it will remain so are different from each of the following values. invalid(2) - writing this value to the object removes the corresponding entry. permanent(3) - this entry is currently in use and will remain so after the next reset of the bridge. deleteOnReset(4) - this entry is currently in use and will remain so until the next reset of the bridge. deleteOnTimeout(5) - this entry is currently in use and will remain so until it is aged out." ::= { dot1dStaticEntry 4 } -- ---------------------------------------------------------- -- -- Notifications for use by Bridges -- ---------------------------------------------------------- -- -- Notifications for the Spanning Tree Protocol -- ---------------------------------------------------------- -- newRoot NOTIFICATION-TYPE -- OBJECTS { } STATUS current DESCRIPTION "The newRoot trap indicates that the sending agent has become the new root of the Spanning Tree; the trap is sent by a bridge soon after its election as the new root, e.g., upon expiration of the Topology Change Timer, immediately subsequent to its election. Implementation of this trap is optional." ::= { dot1dNotifications 1 } topologyChange NOTIFICATION-TYPE -- OBJECTS { } STATUS current DESCRIPTION "A topologyChange trap is sent by a bridge when any of its configured ports transitions from the Learning state to the Forwarding state, or from the Forwarding state to the Blocking state. The trap is not sent if a newRoot trap is sent for the same transition. Implementation of this trap is optional." ::= { dot1dNotifications 2 } -- ---------------------------------------------------------- -- -- IEEE 802.1D MIB - Conformance Information -- ---------------------------------------------------------- -- dot1dGroups OBJECT IDENTIFIER ::= { dot1dConformance 1 } dot1dCompliances OBJECT IDENTIFIER ::= { dot1dConformance 2 } -- ---------------------------------------------------------- -- -- units of conformance -- ---------------------------------------------------------- -- -- ---------------------------------------------------------- -- -- the dot1dBase group -- ---------------------------------------------------------- -- dot1dBaseBridgeGroup OBJECT-GROUP OBJECTS { dot1dBaseBridgeAddress, dot1dBaseNumPorts, dot1dBaseType } STATUS current DESCRIPTION "Bridge level information for this device." ::= { dot1dGroups 1 } dot1dBasePortGroup OBJECT-GROUP OBJECTS { dot1dBasePort, dot1dBasePortIfIndex, dot1dBasePortCircuit, dot1dBasePortDelayExceededDiscards, dot1dBasePortMtuExceededDiscards } STATUS current DESCRIPTION "Information for each port on this device." ::= { dot1dGroups 2 } -- ---------------------------------------------------------- -- -- the dot1dStp group -- ---------------------------------------------------------- -- dot1dStpBridgeGroup OBJECT-GROUP OBJECTS { dot1dStpProtocolSpecification, dot1dStpPriority, dot1dStpTimeSinceTopologyChange, dot1dStpTopChanges, dot1dStpDesignatedRoot, dot1dStpRootCost, dot1dStpRootPort, dot1dStpMaxAge, dot1dStpHelloTime, dot1dStpHoldTime, dot1dStpForwardDelay, dot1dStpBridgeMaxAge, dot1dStpBridgeHelloTime, dot1dStpBridgeForwardDelay } STATUS current DESCRIPTION "Bridge level Spanning Tree data for this device." ::= { dot1dGroups 3 } dot1dStpPortGroup OBJECT-GROUP OBJECTS { dot1dStpPort, dot1dStpPortPriority, dot1dStpPortState, dot1dStpPortEnable, dot1dStpPortPathCost, dot1dStpPortDesignatedRoot, dot1dStpPortDesignatedCost, dot1dStpPortDesignatedBridge, dot1dStpPortDesignatedPort, dot1dStpPortForwardTransitions } STATUS current DESCRIPTION "Spanning Tree data for each port on this device." ::= { dot1dGroups 4 } dot1dStpPortGroup2 OBJECT-GROUP OBJECTS { dot1dStpPort, dot1dStpPortPriority, dot1dStpPortState, dot1dStpPortEnable, dot1dStpPortDesignatedRoot, dot1dStpPortDesignatedCost, dot1dStpPortDesignatedBridge, dot1dStpPortDesignatedPort, dot1dStpPortForwardTransitions, dot1dStpPortPathCost32 } STATUS current DESCRIPTION "Spanning Tree data for each port on this device." ::= { dot1dGroups 5 } dot1dStpPortGroup3 OBJECT-GROUP OBJECTS { dot1dStpPortPathCost32 } STATUS current DESCRIPTION "Spanning Tree data for devices supporting 32-bit path costs." ::= { dot1dGroups 6 } -- ---------------------------------------------------------- -- -- the dot1dTp group -- ---------------------------------------------------------- -- dot1dTpBridgeGroup OBJECT-GROUP OBJECTS { dot1dTpLearnedEntryDiscards, dot1dTpAgingTime } STATUS current DESCRIPTION "Bridge level Transparent Bridging data." ::= { dot1dGroups 7 } dot1dTpFdbGroup OBJECT-GROUP OBJECTS { dot1dTpFdbAddress, dot1dTpFdbPort, dot1dTpFdbStatus } STATUS current DESCRIPTION "Filtering Database information for the Bridge." ::= { dot1dGroups 8 } dot1dTpGroup OBJECT-GROUP OBJECTS { dot1dTpPort, dot1dTpPortMaxInfo, dot1dTpPortInFrames, dot1dTpPortOutFrames, dot1dTpPortInDiscards } STATUS current DESCRIPTION "Dynamic Filtering Database information for each port of the Bridge." ::= { dot1dGroups 9 } -- ---------------------------------------------------------- -- -- The Static (Destination-Address Filtering) Database -- ---------------------------------------------------------- -- dot1dStaticGroup OBJECT-GROUP OBJECTS { dot1dStaticAddress, dot1dStaticReceivePort, dot1dStaticAllowedToGoTo, dot1dStaticStatus } STATUS current DESCRIPTION "Static Filtering Database information for each port of the Bridge." ::= { dot1dGroups 10 } -- ---------------------------------------------------------- -- -- The Trap Notification Group -- ---------------------------------------------------------- -- dot1dNotificationGroup NOTIFICATION-GROUP NOTIFICATIONS { newRoot, topologyChange } STATUS current DESCRIPTION "Group of objects describing notifications (traps)." ::= { dot1dGroups 11 } -- ---------------------------------------------------------- -- -- compliance statements -- ---------------------------------------------------------- -- bridgeCompliance1493 MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for device support of bridging services, as per RFC1493." MODULE MANDATORY-GROUPS { dot1dBaseBridgeGroup, dot1dBasePortGroup } GROUP dot1dStpBridgeGroup DESCRIPTION "Implementation of this group is mandatory for bridges that support the Spanning Tree Protocol." GROUP dot1dStpPortGroup DESCRIPTION "Implementation of this group is mandatory for bridges that support the Spanning Tree Protocol." GROUP dot1dTpBridgeGroup DESCRIPTION "Implementation of this group is mandatory for bridges that support the transparent bridging mode. A transparent or SRT bridge will implement this group." GROUP dot1dTpFdbGroup DESCRIPTION "Implementation of this group is mandatory for bridges that support the transparent bridging mode. A transparent or SRT bridge will implement this group." GROUP dot1dTpGroup DESCRIPTION "Implementation of this group is mandatory for bridges that support the transparent bridging mode. A transparent or SRT bridge will implement this group." GROUP dot1dStaticGroup DESCRIPTION "Implementation of this group is optional." GROUP dot1dNotificationGroup DESCRIPTION "Implementation of this group is optional." ::= { dot1dCompliances 1 } bridgeCompliance4188 MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for device support of bridging services. This supports 32-bit Path Cost values and the more restricted bridge and port priorities, as per IEEE 802.1t. Full support for the 802.1D management objects requires that the SNMPv2-MIB [RFC3418] objects sysDescr, and sysUpTime, as well as the IF-MIB [RFC2863] objects ifIndex, ifType, ifDescr, ifPhysAddress, and ifLastChange are implemented." MODULE MANDATORY-GROUPS { dot1dBaseBridgeGroup, dot1dBasePortGroup } GROUP dot1dStpBridgeGroup DESCRIPTION "Implementation of this group is mandatory for bridges that support the Spanning Tree Protocol." OBJECT dot1dStpPriority SYNTAX Integer32 (0|4096|8192|12288|16384|20480|24576 |28672|32768|36864|40960|45056|49152 |53248|57344|61440) DESCRIPTION "The possible values defined by IEEE 802.1t." GROUP dot1dStpPortGroup2 DESCRIPTION "Implementation of this group is mandatory for bridges that support the Spanning Tree Protocol." GROUP dot1dStpPortGroup3 DESCRIPTION "Implementation of this group is mandatory for bridges that support the Spanning Tree Protocol and 32-bit path costs. In particular, this includes devices supporting IEEE 802.1t and IEEE 802.1w." OBJECT dot1dStpPortPriority SYNTAX Integer32 (0|16|32|48|64|80|96|112|128 |144|160|176|192|208|224|240) DESCRIPTION "The possible values defined by IEEE 802.1t." GROUP dot1dTpBridgeGroup DESCRIPTION "Implementation of this group is mandatory for bridges that support the transparent bridging mode. A transparent or SRT bridge will implement this group." GROUP dot1dTpFdbGroup DESCRIPTION "Implementation of this group is mandatory for bridges that support the transparent bridging mode. A transparent or SRT bridge will implement this group." GROUP dot1dTpGroup DESCRIPTION "Implementation of this group is mandatory for bridges that support the transparent bridging mode. A transparent or SRT bridge will implement this group." GROUP dot1dStaticGroup DESCRIPTION "Implementation of this group is optional." GROUP dot1dNotificationGroup DESCRIPTION "Implementation of this group is optional." ::= { dot1dCompliances 2 } END diff --git a/usr.sbin/bsnmpd/modules/snmp_bridge/RSTP-MIB.txt b/usr.sbin/bsnmpd/modules/snmp_bridge/RSTP-MIB.txt index ea6648e031b2..b0a44858ff32 100644 --- a/usr.sbin/bsnmpd/modules/snmp_bridge/RSTP-MIB.txt +++ b/usr.sbin/bsnmpd/modules/snmp_bridge/RSTP-MIB.txt @@ -1,325 +1,323 @@ -- -- Copyright (C) The Internet Society (2005). -- -- This document is subject to the rights, licenses and restrictions -- contained in BCP 78, and except as set forth therein, the authors -- retain all their rights. -- -- This document and the information contained herein are provided on an -- "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS -- OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY AND THE INTERNET -- ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, -- INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE -- INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED -- WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. -- --- $FreeBSD$ --- RSTP-MIB DEFINITIONS ::= BEGIN -- ------------------------------------------------------------- -- MIB for IEEE 802.1w Rapid Spanning Tree Protocol -- ------------------------------------------------------------- IMPORTS MODULE-IDENTITY, OBJECT-TYPE, Integer32, mib-2 FROM SNMPv2-SMI TruthValue FROM SNMPv2-TC MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF dot1dStp, dot1dStpPortEntry FROM BRIDGE-MIB; rstpMIB MODULE-IDENTITY LAST-UPDATED "200512070000Z" ORGANIZATION "IETF Bridge MIB Working Group" CONTACT-INFO "Email: Bridge-mib@ietf.org" DESCRIPTION "The Bridge MIB Extension module for managing devices that support the Rapid Spanning Tree Protocol defined by IEEE 802.1w. Copyright (C) The Internet Society (2005). This version of this MIB module is part of RFC 4318; See the RFC itself for full legal notices." REVISION "200512070000Z" DESCRIPTION "The initial version of this MIB module as published in RFC 4318." ::= { mib-2 134 } -- ---------------------------------------------------------- -- -- subtrees in the RSTP-MIB -- ---------------------------------------------------------- -- rstpNotifications OBJECT IDENTIFIER ::= { rstpMIB 0 } rstpObjects OBJECT IDENTIFIER ::= { rstpMIB 1 } rstpConformance OBJECT IDENTIFIER ::= { rstpMIB 2 } -- ------------------------------------------------------------- -- Addition to the dot1dStp group -- ------------------------------------------------------------- dot1dStpVersion OBJECT-TYPE SYNTAX INTEGER { stpCompatible(0), rstp(2) } MAX-ACCESS read-write STATUS current DESCRIPTION "The version of Spanning Tree Protocol the bridge is currently running. The value 'stpCompatible(0)' indicates the Spanning Tree Protocol specified in IEEE 802.1D-1998 and 'rstp(2)' indicates the Rapid Spanning Tree Protocol specified in IEEE 802.1w and clause 17 of 802.1D-2004. The values are directly from the IEEE standard. New values may be defined as future versions of the protocol become available. The value of this object MUST be retained across reinitializations of the management system." REFERENCE "IEEE 802.1w clause 14.8.1, 17.12, 17.16.1" DEFVAL { rstp } ::= { dot1dStp 16 } dot1dStpTxHoldCount OBJECT-TYPE SYNTAX Integer32 (1..10) MAX-ACCESS read-write STATUS current DESCRIPTION "The value used by the Port Transmit state machine to limit the maximum transmission rate. The value of this object MUST be retained across reinitializations of the management system." REFERENCE "IEEE 802.1w clause 17.16.6" DEFVAL { 3 } ::= { dot1dStp 17 } -- -- { dot1dStp 18 } was used to represent dot1dStpPathCostDefault -- in an earlier version of this MIB. It has since been -- obsoleted, and should not be used. -- dot1dStpExtPortTable OBJECT-TYPE SYNTAX SEQUENCE OF Dot1dStpExtPortEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains port-specific Rapid Spanning Tree information." ::= { dot1dStp 19 } dot1dStpExtPortEntry OBJECT-TYPE SYNTAX Dot1dStpExtPortEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of Rapid Spanning Tree information maintained by each port." AUGMENTS { dot1dStpPortEntry } ::= { dot1dStpExtPortTable 1 } Dot1dStpExtPortEntry ::= SEQUENCE { dot1dStpPortProtocolMigration TruthValue, dot1dStpPortAdminEdgePort TruthValue, dot1dStpPortOperEdgePort TruthValue, dot1dStpPortAdminPointToPoint INTEGER, dot1dStpPortOperPointToPoint TruthValue, dot1dStpPortAdminPathCost Integer32 } dot1dStpPortProtocolMigration OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "When operating in RSTP (version 2) mode, writing true(1) to this object forces this port to transmit RSTP BPDUs. Any other operation on this object has no effect and it always returns false(2) when read." REFERENCE "IEEE 802.1w clause 14.8.2.4, 17.18.10, 17.26" ::= { dot1dStpExtPortEntry 1 } dot1dStpPortAdminEdgePort OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The administrative value of the Edge Port parameter. A value of true(1) indicates that this port should be assumed as an edge-port, and a value of false(2) indicates that this port should be assumed as a non-edge-port. Setting this object will also cause the corresponding instance of dot1dStpPortOperEdgePort to change to the same value. Note that even when this object's value is true, the value of the corresponding instance of dot1dStpPortOperEdgePort can be false if a BPDU has been received. The value of this object MUST be retained across reinitializations of the management system." REFERENCE "IEEE 802.1t clause 14.8.2, 18.3.3" ::= { dot1dStpExtPortEntry 2 } dot1dStpPortOperEdgePort OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "The operational value of the Edge Port parameter. The object is initialized to the value of the corresponding instance of dot1dStpPortAdminEdgePort. When the corresponding instance of dot1dStpPortAdminEdgePort is set, this object will be changed as well. This object will also be changed to false on reception of a BPDU." REFERENCE "IEEE 802.1t clause 14.8.2, 18.3.4" ::= { dot1dStpExtPortEntry 3 } dot1dStpPortAdminPointToPoint OBJECT-TYPE SYNTAX INTEGER { forceTrue(0), forceFalse(1), auto(2) } MAX-ACCESS read-write STATUS current DESCRIPTION "The administrative point-to-point status of the LAN segment attached to this port, using the enumeration values of the IEEE 802.1w clause. A value of forceTrue(0) indicates that this port should always be treated as if it is connected to a point-to-point link. A value of forceFalse(1) indicates that this port should be treated as having a shared media connection. A value of auto(2) indicates that this port is considered to have a point-to-point link if it is an Aggregator and all of its members are aggregatable, or if the MAC entity is configured for full duplex operation, either through auto-negotiation or by management means. Manipulating this object changes the underlying adminPortToPortMAC. The value of this object MUST be retained across reinitializations of the management system." REFERENCE "IEEE 802.1w clause 6.4.3, 6.5, 14.8.2" ::= { dot1dStpExtPortEntry 4 } dot1dStpPortOperPointToPoint OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "The operational point-to-point status of the LAN segment attached to this port. It indicates whether a port is considered to have a point-to-point connection. If adminPointToPointMAC is set to auto(2), then the value of operPointToPointMAC is determined in accordance with the specific procedures defined for the MAC entity concerned, as defined in IEEE 802.1w, clause 6.5. The value is determined dynamically; that is, it is re-evaluated whenever the value of adminPointToPointMAC changes, and whenever the specific procedures defined for the MAC entity evaluate a change in its point-to-point status." REFERENCE "IEEE 802.1w clause 6.4.3, 6.5, 14.8.2" ::= { dot1dStpExtPortEntry 5 } dot1dStpPortAdminPathCost OBJECT-TYPE SYNTAX Integer32 (0..200000000) MAX-ACCESS read-write STATUS current DESCRIPTION "The administratively assigned value for the contribution of this port to the path cost of paths toward the spanning tree root. Writing a value of '0' assigns the automatically calculated default Path Cost value to the port. If the default Path Cost is being used, this object returns '0' when read. This complements the object dot1dStpPortPathCost or dot1dStpPortPathCost32, which returns the operational value of the path cost. The value of this object MUST be retained across reinitializations of the management system." REFERENCE "IEEE 802.1D-1998: Section 8.5.5.3" ::= { dot1dStpExtPortEntry 6 } -- ------------------------------------------------------------- -- rstpMIB - Conformance Information -- ------------------------------------------------------------- rstpGroups OBJECT IDENTIFIER ::= { rstpConformance 1 } rstpCompliances OBJECT IDENTIFIER ::= { rstpConformance 2 } -- ------------------------------------------------------------- -- Units of conformance -- ------------------------------------------------------------- rstpBridgeGroup OBJECT-GROUP OBJECTS { dot1dStpVersion, dot1dStpTxHoldCount } STATUS current DESCRIPTION "Rapid Spanning Tree information for the bridge." ::= { rstpGroups 1 } rstpPortGroup OBJECT-GROUP OBJECTS { dot1dStpPortProtocolMigration, dot1dStpPortAdminEdgePort, dot1dStpPortOperEdgePort, dot1dStpPortAdminPointToPoint, dot1dStpPortOperPointToPoint, dot1dStpPortAdminPathCost } STATUS current DESCRIPTION "Rapid Spanning Tree information for individual ports." ::= { rstpGroups 2 } -- ------------------------------------------------------------- -- Compliance statements -- ------------------------------------------------------------- rstpCompliance MODULE-COMPLIANCE STATUS current DESCRIPTION "The compliance statement for device support of Rapid Spanning Tree Protocol (RSTP) bridging services." MODULE MANDATORY-GROUPS { rstpBridgeGroup, rstpPortGroup } ::= { rstpCompliances 1 } END diff --git a/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt b/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt index 0f330c171aaf..44ada542a69d 100644 --- a/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt +++ b/usr.sbin/bsnmpd/modules/snmp_hast/BEGEMOT-HAST-MIB.txt @@ -1,362 +1,360 @@ -- -- Copyright (c) 2013 Mikolaj Golub -- All rights reserved. -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- BEGEMOT-HAST-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Counter64, Integer32 FROM SNMPv2-SMI TEXTUAL-CONVENTION, RowStatus FROM SNMPv2-TC InterfaceIndex, ifIndex FROM IF-MIB begemot FROM BEGEMOT-MIB; begemotHast MODULE-IDENTITY LAST-UPDATED "201304130000Z" ORGANIZATION "FreeBSD" CONTACT-INFO " Mikolaj Golub Postal: Bluhera 27v 11 61146 Kharkiv Ukraine Fax: N/A E-Mail: trociny@FreeBSD.org" DESCRIPTION "The Begemot MIB for managing HAST." REVISION "201304130000Z" DESCRIPTION "Initial revision." REVISION "201307010000Z" DESCRIPTION "Added hastResourceWorkerPid." REVISION "201312290000Z" DESCRIPTION "Added hastResourceLocalQueue, hastResourceSendQueue, hastResourceRecvQueue, hastResourceDoneQueue, hastResourceIdleQueue." ::= { begemot 220 } begemotHastObjects OBJECT IDENTIFIER ::= { begemotHast 1 } -- ---------------------------------------------------------- -- -- Configuration parameters -- ---------------------------------------------------------- -- hastConfig OBJECT IDENTIFIER ::= { begemotHastObjects 1 } hastConfigFile OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "HAST configuration file location." ::= { hastConfig 1 } -- ---------------------------------------------------------- -- -- Resource Table -- ---------------------------------------------------------- -- hastResourceTable OBJECT-TYPE SYNTAX SEQUENCE OF HastResourceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table containing information about all HAST resources." ::= { begemotHastObjects 2 } hastResourceEntry OBJECT-TYPE SYNTAX HastResourceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Table entry that describes one HAST resource." INDEX { hastResourceIndex } ::= { hastResourceTable 1 } HastResourceEntry ::= SEQUENCE { hastResourceIndex Integer32, hastResourceName OCTET STRING, hastResourceRole INTEGER, hastResourceProvName OCTET STRING, hastResourceLocalPath OCTET STRING, hastResourceExtentSize Integer32, hastResourceKeepDirty Integer32, hastResourceRemoteAddr OCTET STRING, hastResourceSourceAddr OCTET STRING, hastResourceReplication INTEGER, hastResourceStatus INTEGER, hastResourceDirty Counter64, hastResourceReads Counter64, hastResourceWrites Counter64, hastResourceDeletes Counter64, hastResourceFlushes Counter64, hastResourceActivemapUpdates Counter64, hastResourceReadErrors Counter64, hastResourceWriteErrors Counter64, hastResourceDeleteErrors Counter64, hastResourceFlushErrors Counter64, hastResourceWorkerPid INTEGER, hastResourceLocalQueue UNSIGNED32, hastResourceSendQueue UNSIGNED32, hastResourceRecvQueue UNSIGNED32, hastResourceDoneQueue UNSIGNED32, hastResourceIdleQueue UNSIGNED32 } hastResourceIndex OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "Resource index." ::= { hastResourceEntry 1 } hastResourceName OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "Resource name." ::= { hastResourceEntry 2 } hastResourceRole OBJECT-TYPE SYNTAX INTEGER { undef(0), init(1), primary(2), secondary(3) } MAX-ACCESS read-write STATUS current DESCRIPTION "Resource role." ::= { hastResourceEntry 3 } hastResourceProvName OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "Resource GEOM provider name that appears as /dev/hast/." ::= { hastResourceEntry 4 } hastResourceLocalPath OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "Path to the local component which is used as a backend provider for the resource." ::= { hastResourceEntry 5 } hastResourceExtentSize OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "Size of an extent. Extent is a block which is used for synchronization. hastd(8) maintains a map of dirty extents and extent is the smallest region that can be marked as dirty. If any part of an extent is modified, entire extent will be synchronized when nodes connect." ::= { hastResourceEntry 6 } hastResourceKeepDirty OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "Maximum number of dirty extents to keep dirty all the time. Most recently used extents are kept dirty to reduce number of metadata updates." ::= { hastResourceEntry 7 } hastResourceRemoteAddr OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "Address of the remote hastd(8) daemon for the resource." ::= { hastResourceEntry 8 } hastResourceSourceAddr OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "Local address the resource is bound to." ::= { hastResourceEntry 9 } hastResourceReplication OBJECT-TYPE SYNTAX INTEGER { fullsync(0), memsync(1), async(2) } MAX-ACCESS read-only STATUS current DESCRIPTION "Resource replication mode." ::= { hastResourceEntry 10 } hastResourceStatus OBJECT-TYPE SYNTAX INTEGER { complete(0), degraded(1) } MAX-ACCESS read-only STATUS current DESCRIPTION "Resource replication status." ::= { hastResourceEntry 11 } hastResourceDirty OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Current number of dirty extents for the resource." ::= { hastResourceEntry 12 } hastResourceReads OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Count of resource local read operations." ::= { hastResourceEntry 13 } hastResourceWrites OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Count of resource local write operations." ::= { hastResourceEntry 14 } hastResourceDeletes OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Count of resource local delete operations." ::= { hastResourceEntry 15 } hastResourceFlushes OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Count of resource local flush operations." ::= { hastResourceEntry 16 } hastResourceActivemapUpdates OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Count of resource local activemap updates." ::= { hastResourceEntry 17 } hastResourceReadErrors OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Count of resource local read operations that failed." ::= { hastResourceEntry 18 } hastResourceWriteErrors OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Count of resource local write operations that failed." ::= { hastResourceEntry 19 } hastResourceDeleteErrors OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Count of resource local delete operations that failed." ::= { hastResourceEntry 20 } hastResourceFlushErrors OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Count of resource local flush operations that failed." ::= { hastResourceEntry 21 } hastResourceWorkerPid OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "Worker process ID." ::= { hastResourceEntry 22 } hastResourceLocalQueue OBJECT-TYPE SYNTAX UNSIGNED32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of outstanding I/O requests to the local component." ::= { hastResourceEntry 23 } hastResourceSendQueue OBJECT-TYPE SYNTAX UNSIGNED32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of outstanding I/O requests to send to the remote component." ::= { hastResourceEntry 24 } hastResourceRecvQueue OBJECT-TYPE SYNTAX UNSIGNED32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of outstanding I/O requests waiting for response from the remote component." ::= { hastResourceEntry 25 } hastResourceDoneQueue OBJECT-TYPE SYNTAX UNSIGNED32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of processed I/O requests to return to the kernel." ::= { hastResourceEntry 26 } hastResourceIdleQueue OBJECT-TYPE SYNTAX UNSIGNED32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of request objects in the free bucket." ::= { hastResourceEntry 27 } END diff --git a/usr.sbin/bsnmpd/modules/snmp_hostres/BEGEMOT-HOSTRES-MIB.txt b/usr.sbin/bsnmpd/modules/snmp_hostres/BEGEMOT-HOSTRES-MIB.txt index 3c15e090e1fd..f05ae47f081d 100644 --- a/usr.sbin/bsnmpd/modules/snmp_hostres/BEGEMOT-HOSTRES-MIB.txt +++ b/usr.sbin/bsnmpd/modules/snmp_hostres/BEGEMOT-HOSTRES-MIB.txt @@ -1,128 +1,126 @@ -- -- Copyright (c) 2005-2006 -- Hartmut Brandt -- All rights reserved. -- -- Author: Harti Brandt -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- -- Additional stuff for the HOST-RESOURCES MIB. -- BEGEMOT-HOSTRES-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, TimeTicks FROM SNMPv2-SMI begemot FROM BEGEMOT-MIB; begemotHostres MODULE-IDENTITY LAST-UPDATED "200601030000Z" ORGANIZATION "German Aerospace Center" CONTACT-INFO " Hartmut Brandt Postal: German Aerospace Center Oberpfaffenhofen 82234 Wessling Germany Fax: +49 8153 28 2843 E-mail: harti@freebsd.org" DESCRIPTION "The MIB for additional HOST-RESOURCES data." REVISION "200601030000Z" DESCRIPTION "Initial revision." ::= { begemot 202 } begemotHostresObjects OBJECT IDENTIFIER ::= { begemotHostres 1 } begemotHrStorageUpdate OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum number of ticks the storage table is cached." DEFVAL { 700 } ::= { begemotHostresObjects 1 } begemotHrFSUpdate OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum number of ticks the FS table is cached." DEFVAL { 700 } ::= { begemotHostresObjects 2 } begemotHrDiskStorageUpdate OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum number of ticks the disk storage table is cached." DEFVAL { 300 } ::= { begemotHostresObjects 3 } begemotHrNetworkUpdate OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum number of ticks the network table is cached." DEFVAL { 700 } ::= { begemotHostresObjects 4 } begemotHrSWInstalledUpdate OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum number of ticks the hrSWInstalledTable is cached." DEFVAL { 1200 } ::= { begemotHostresObjects 5 } begemotHrSWRunUpdate OBJECT-TYPE SYNTAX TimeTicks MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum number of ticks the hrSWRunTable and hrSWRunPerfTable are cached." DEFVAL { 300 } ::= { begemotHostresObjects 6 } begemotHrPkgDir OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-write STATUS current DESCRIPTION "The path to the package DB directory." DEFVAL { "/var/db/pkg" } ::= { begemotHostresObjects 7 } END diff --git a/usr.sbin/bsnmpd/modules/snmp_lm75/BEGEMOT-LM75-MIB.txt b/usr.sbin/bsnmpd/modules/snmp_lm75/BEGEMOT-LM75-MIB.txt index f8f52a639be0..c4cf536e5043 100644 --- a/usr.sbin/bsnmpd/modules/snmp_lm75/BEGEMOT-LM75-MIB.txt +++ b/usr.sbin/bsnmpd/modules/snmp_lm75/BEGEMOT-LM75-MIB.txt @@ -1,160 +1,158 @@ -- -- Copyright (c) 2014 Luiz Otavio O Souza -- All rights reserved. -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- BEGEMOT-LM75-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Counter64, Integer32 FROM SNMPv2-SMI TEXTUAL-CONVENTION, RowStatus FROM SNMPv2-TC begemot FROM BEGEMOT-MIB; begemotLoos MODULE-IDENTITY LAST-UPDATED "201402240000Z" ORGANIZATION "FreeBSD" CONTACT-INFO " Luiz Otavio O Souza Postal: N/A Fax: N/A E-Mail: loos@FreeBSD.org" DESCRIPTION "The Begemot MIB for reading lm75 sensors data." REVISION "201402240000Z" DESCRIPTION "Initial revision." ::= { begemot 400 } begemotLm75Objects OBJECT IDENTIFIER ::= { begemotLm75 1 } -- ---------------------------------------------------------- -- -- Configuration parameters -- ---------------------------------------------------------- -- lm75Sensor OBJECT IDENTIFIER ::= { begemotlm75Objects 1 } lm75Sensors OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of LM75 sensors in the system." ::= { lm75Sensors 1 } -- ---------------------------------------------------------- -- -- TempSensor Table -- ---------------------------------------------------------- -- lm75SensorTable OBJECT-TYPE SYNTAX SEQUENCE OF Lm75SensorEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table containing information about all temperature sensors." ::= { begemotLm75Objects 2 } loosTempSensorEntry OBJECT-TYPE SYNTAX Lm75SensorEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Table entry that describes one temperature sensor." INDEX { lm75SensorIndex } ::= { lm75SensorTable 1 } Lm75SensorEntry ::= SEQUENCE { lm75SensorIndex Integer32, lm75SensorSysctlIndex Integer32, lm75SensorDesc OCTET STRING, lm75SensorLocation OCTET STRING, lm75SensorPnpInfo OCTET STRING, lm75SensorParent OCTET STRING, lm75SensorTemperature Integer32 } lm75SensorIndex OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "LM75 Sensor index." ::= { lm75SensorEntry 1 } lm75SensorSysctlIndex OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "LM75 Sensor sysctl index." ::= { lm75SensorEntry 2 } lm75SensorDesc OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "LM75 Sensor description." ::= { lm75SensorEntry 3 } lm75SensorLocation OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "LM75 Sensor location." ::= { lm75SensorEntry 4 } lm75SensorPnpInfo OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "LM75 Sensor pnp information." ::= { lm75SensorEntry 5 } lm75SensorParent OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "LM75 Sensor parent bus." ::= { lm75SensorEntry 6 } lm75SensorTemperature OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "LM75 Sensor temperature." ::= { lm75SensorEntry 7 } END diff --git a/usr.sbin/bsnmpd/modules/snmp_netgraph/BEGEMOT-NETGRAPH.txt b/usr.sbin/bsnmpd/modules/snmp_netgraph/BEGEMOT-NETGRAPH.txt index b4f0e2a3f993..572fe1820e0c 100644 --- a/usr.sbin/bsnmpd/modules/snmp_netgraph/BEGEMOT-NETGRAPH.txt +++ b/usr.sbin/bsnmpd/modules/snmp_netgraph/BEGEMOT-NETGRAPH.txt @@ -1,411 +1,409 @@ -- -- Copyright (c) 2001-2003 -- Fraunhofer Institute for Open Communication Systems (FhG Fokus). -- All rights reserved. -- -- Author: Harti Brandt -- -- Redistribution of this software and documentation and use in source and -- binary forms, with or without modification, are permitted provided that -- the following conditions are met: -- -- 1. Redistributions of source code or documentation must retain the above -- copyright notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE AND DOCUMENTATION IS PROVIDED BY FRAUNHOFER FOKUS -- AND ITS CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, -- INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND -- FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL -- FRAUNHOFER FOKUS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, -- INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -- LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, -- OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -- LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING -- NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, -- EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -- --- $FreeBSD$ --- -- Private MIB for netgraph part of Begemot SNMP daemon. -- BEGEMOT-NETGRAPH-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, Counter32, Unsigned32 FROM SNMPv2-SMI TEXTUAL-CONVENTION, TruthValue FROM SNMPv2-TC MODULE-COMPLIANCE, OBJECT-GROUP FROM SNMPv2-CONF begemot FROM BEGEMOT-MIB; begemotNg MODULE-IDENTITY LAST-UPDATED "200311140000Z" ORGANIZATION "Fraunhofer FOKUS, CATS" CONTACT-INFO " Hartmut Brandt Postal: Fraunhofer Institute for Open Communication Systems Kaiserin-Augusta-Allee 31 10589 Berlin Germany Fax: +49 30 3463 7352 E-mail: harti@freebsd.org" DESCRIPTION "The MIB for the NetGraph access module for SNMP." REVISION "200311140000Z" DESCRIPTION "The maximum width of the following OCTET STRINGs was increased from 15 to 31: - NgTypeName - NgNodeName - NgNodeNameOrEmpty - NgHookName " REVISION "200201310000Z" DESCRIPTION "Initial revision." ::= { begemot 2 } begemotNgObjects OBJECT IDENTIFIER ::= { begemotNg 1 } -- -------------------------------------------------------------------------- NgTypeName ::= TEXTUAL-CONVENTION DISPLAY-HINT "31a" STATUS current DESCRIPTION "Name of a netgraph type." SYNTAX OCTET STRING (SIZE(1..31)) NgNodeName ::= TEXTUAL-CONVENTION DISPLAY-HINT "31a" STATUS current DESCRIPTION "Name of a netgraph node." SYNTAX OCTET STRING (SIZE(1..31)) NgNodeNameOrEmpty ::= TEXTUAL-CONVENTION DISPLAY-HINT "31a" STATUS current DESCRIPTION "Name of a netgraph node." SYNTAX OCTET STRING (SIZE(0..31)) NgHookName ::= TEXTUAL-CONVENTION DISPLAY-HINT "31a" STATUS current DESCRIPTION "Name of a netgraph hook." SYNTAX OCTET STRING (SIZE(1..31)) NgNodeId ::= TEXTUAL-CONVENTION DISPLAY-HINT "x" STATUS current DESCRIPTION "Node identifier." SYNTAX Unsigned32 (1..4294967295) NgNodeIdOrZero ::= TEXTUAL-CONVENTION DISPLAY-HINT "x" STATUS current DESCRIPTION "Node identifier or 0 for 'no-node'." SYNTAX Unsigned32 (0..4294967295) -- -------------------------------------------------------------------------- -- -- Configuration parameters -- begemotNgConfig OBJECT IDENTIFIER ::= { begemotNgObjects 1 } begemotNgControlNodeName OBJECT-TYPE SYNTAX NgNodeName MAX-ACCESS read-only STATUS current DESCRIPTION "The name of the netgraph node of this daemon. The name is writeable during initialisation. If the name is set from the empty string to the non-empty string, the netgraph socket is created. Once set it cannot be changed." ::= { begemotNgConfig 1 } begemotNgResBufSiz OBJECT-TYPE SYNTAX INTEGER (1024..65536) MAX-ACCESS read-write STATUS current DESCRIPTION "The size of the receive buffers for netgraph messages." DEFVAL { 20000 } ::= { begemotNgConfig 2 } begemotNgTimeout OBJECT-TYPE SYNTAX INTEGER (10..10000) UNITS "milliseconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum time to wait for a response to a netgraph message." DEFVAL { 1000 } ::= { begemotNgConfig 3 } begemotNgDebugLevel OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-write STATUS current DESCRIPTION "The netgraph library debug level. This should be set only if the daemon is run with a terminal attached." DEFVAL { 0 } ::= { begemotNgConfig 4 } -- -------------------------------------------------------------------------- -- -- The STATISTICS Group -- begemotNgStats OBJECT IDENTIFIER ::= { begemotNgObjects 2 } begemotNgNoMems OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of times a memory allocation has failed for buffers or the message queue." ::= { begemotNgStats 1 } begemotNgMsgReadErrs OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of times reading a netgraph message has failed." ::= { begemotNgStats 2 } begemotNgTooLargeMsgs OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of times a netgraph message was too large for the buffer. Try increasing begemotNgResBufSiz if this happens." ::= { begemotNgStats 3 } begemotNgDataReadErrs OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of times reading a netgraph data message has failed." ::= { begemotNgStats 4 } begemotNgTooLargeDatas OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of times a netgraph data message was too large. You need to increase begemotNgResBufSiz." ::= { begemotNgStats 5 } -- ----------------------------------------------------- -- -- The NODE table -- begemotNgTypeTable OBJECT-TYPE SYNTAX SEQUENCE OF BegemotNgTypeEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table containing information about all netgraph node types." ::= { begemotNgObjects 3 } begemotNgTypeEntry OBJECT-TYPE SYNTAX BegemotNgTypeEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Table entry that describes one netgraph node." INDEX { begemotNgTypeName } ::= { begemotNgTypeTable 1 } BegemotNgTypeEntry ::= SEQUENCE { begemotNgTypeName NgTypeName, begemotNgTypeStatus INTEGER } begemotNgTypeName OBJECT-TYPE SYNTAX NgTypeName MAX-ACCESS not-accessible STATUS current DESCRIPTION "The name of the type. Used as index." ::= { begemotNgTypeEntry 1 } begemotNgTypeStatus OBJECT-TYPE SYNTAX INTEGER { loaded(1), unloaded(2) } MAX-ACCESS read-create STATUS current DESCRIPTION "If loaded then the node type is available. A type can be load by setting this field to loaded. It is unload if the field is set to unloaded. Note, that a type cannot be unloaded if it is compiled into the kernel or has nodes of this type. The name of the file containing the type implementation is constructed by prepending ng_ to the type name." ::= { begemotNgTypeEntry 2 } -- -- Node table -- begemotNgNodeTable OBJECT-TYPE SYNTAX SEQUENCE OF BegemotNgNodeEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table containing information about all netgraph nodes." ::= { begemotNgObjects 4 } begemotNgNodeEntry OBJECT-TYPE SYNTAX BegemotNgNodeEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Table entry that describes one netgraph node." INDEX { begemotNgNodeId } ::= { begemotNgNodeTable 1 } BegemotNgNodeEntry ::= SEQUENCE { begemotNgNodeId NgNodeId, begemotNgNodeStatus INTEGER, begemotNgNodeName NgNodeNameOrEmpty, begemotNgNodeType NgTypeName, begemotNgNodeHooks Unsigned32 } begemotNgNodeId OBJECT-TYPE SYNTAX NgNodeId MAX-ACCESS not-accessible STATUS current DESCRIPTION "The 32bit node id of this node. 0 is an illegal value." ::= { begemotNgNodeEntry 1 } begemotNgNodeStatus OBJECT-TYPE SYNTAX INTEGER { valid(1), invalid(2) } MAX-ACCESS read-only STATUS current DESCRIPTION "Indicates whether the node exists or not." ::= { begemotNgNodeEntry 2 } begemotNgNodeName OBJECT-TYPE SYNTAX NgNodeNameOrEmpty MAX-ACCESS read-only STATUS current DESCRIPTION "Name of the node (if any)." ::= { begemotNgNodeEntry 3 } begemotNgNodeType OBJECT-TYPE SYNTAX NgTypeName MAX-ACCESS read-only STATUS current DESCRIPTION "Type name of the node." ::= { begemotNgNodeEntry 4 } begemotNgNodeHooks OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of hooks on this node." ::= { begemotNgNodeEntry 5 } -- -- Hook table -- begemotNgHookTable OBJECT-TYPE SYNTAX SEQUENCE OF BegemotNgHookEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table containing information about all netgraph hooks." ::= { begemotNgObjects 5 } begemotNgHookEntry OBJECT-TYPE SYNTAX BegemotNgHookEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Table entry that describes one netgraph node." INDEX { begemotNgHookNodeId, begemotNgHookHook } ::= { begemotNgHookTable 1 } BegemotNgHookEntry ::= SEQUENCE { begemotNgHookNodeId NgNodeId, begemotNgHookHook NgHookName, begemotNgHookStatus INTEGER, begemotNgHookPeerNodeId NgNodeId, begemotNgHookPeerHook NgHookName, begemotNgHookPeerType NgTypeName } begemotNgHookNodeId OBJECT-TYPE SYNTAX NgNodeId MAX-ACCESS not-accessible STATUS current DESCRIPTION "The 32bit node id of this node." ::= { begemotNgHookEntry 1 } begemotNgHookHook OBJECT-TYPE SYNTAX NgHookName MAX-ACCESS read-only STATUS current DESCRIPTION "Name of the hook." ::= { begemotNgHookEntry 2 } begemotNgHookStatus OBJECT-TYPE SYNTAX INTEGER { valid(1), invalid(2) } MAX-ACCESS read-only STATUS current DESCRIPTION "Indicates whether the hook exists or not." ::= { begemotNgHookEntry 3 } begemotNgHookPeerNodeId OBJECT-TYPE SYNTAX NgNodeId MAX-ACCESS read-only STATUS current DESCRIPTION "The 32bit node id of the peer node of this hook." ::= { begemotNgHookEntry 4 } begemotNgHookPeerHook OBJECT-TYPE SYNTAX NgHookName MAX-ACCESS read-only STATUS current DESCRIPTION "Name of the peer hook." ::= { begemotNgHookEntry 5 } begemotNgHookPeerType OBJECT-TYPE SYNTAX NgTypeName MAX-ACCESS read-only STATUS current DESCRIPTION "Name of the peer type." ::= { begemotNgHookEntry 6 } END diff --git a/usr.sbin/bsnmpd/modules/snmp_pf/BEGEMOT-PF-MIB.txt b/usr.sbin/bsnmpd/modules/snmp_pf/BEGEMOT-PF-MIB.txt index d92b6ac7d0c6..13a4a646a669 100644 --- a/usr.sbin/bsnmpd/modules/snmp_pf/BEGEMOT-PF-MIB.txt +++ b/usr.sbin/bsnmpd/modules/snmp_pf/BEGEMOT-PF-MIB.txt @@ -1,1347 +1,1345 @@ -- -- ---------------------------------------------------------------------------- -- "THE BEER-WARE LICENSE" (Revision 42): -- wrote this file. As long as you retain this notice you -- can do whatever you want with this stuff. If we meet some day, and you think -- this stuff is worth it, you can buy me a beer in return. -Philip Paeps -- ---------------------------------------------------------------------------- -- --- $FreeBSD$ --- BEGEMOT-PF-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, Counter64, Integer32, TimeTicks, Unsigned32 FROM SNMPv2-SMI TruthValue FROM SNMPv2-TC InetAddress, InetAddressType, InetAddressPrefixLength FROM INET-ADDRESS-MIB begemot FROM BEGEMOT-MIB; begemotPf MODULE-IDENTITY LAST-UPDATED "201003180000Z" ORGANIZATION "NixSys BVBA" CONTACT-INFO " Philip Paeps Postal: NixSys BVBA Louizastraat 14 BE-2800 Mechelen Belgium E-Mail: philip@FreeBSD.org" DESCRIPTION "The Begemot MIB for the pf packet filter." REVISION "201003180000Z" DESCRIPTION "Modified pfTablesAddrEntry to support IPv6 addresses - added pfTablesAddrNetType column and modified type of pfTablesAddrNet to InetAddress." REVISION "200912050000Z" DESCRIPTION "Added support for retrieving counters of labeled pf filter rules via pfLabelspfLabels subtree." REVISION "200501240000Z" DESCRIPTION "Initial revision." ::= { begemot 200 } begemotPfObjects OBJECT IDENTIFIER ::= { begemotPf 1 } -- -------------------------------------------------------------------------- pfStatus OBJECT IDENTIFIER ::= { begemotPfObjects 1 } pfCounter OBJECT IDENTIFIER ::= { begemotPfObjects 2 } pfStateTable OBJECT IDENTIFIER ::= { begemotPfObjects 3 } pfSrcNodes OBJECT IDENTIFIER ::= { begemotPfObjects 4 } pfLimits OBJECT IDENTIFIER ::= { begemotPfObjects 5 } pfTimeouts OBJECT IDENTIFIER ::= { begemotPfObjects 6 } pfLogInterface OBJECT IDENTIFIER ::= { begemotPfObjects 7 } pfInterfaces OBJECT IDENTIFIER ::= { begemotPfObjects 8 } pfTables OBJECT IDENTIFIER ::= { begemotPfObjects 9 } pfAltq OBJECT IDENTIFIER ::= { begemotPfObjects 10 } pfLabels OBJECT IDENTIFIER ::= { begemotPfObjects 11 } -- -------------------------------------------------------------------------- -- -- status information -- pfStatusRunning OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-only STATUS current DESCRIPTION "True if pf is currently enabled." ::= { pfStatus 1 } pfStatusRuntime OBJECT-TYPE SYNTAX TimeTicks UNITS "1/100th of a Second" MAX-ACCESS read-only STATUS current DESCRIPTION "Indicates how long pf has been enabled. If pf is not currently enabled, indicates how long it has been disabled. If pf has not been enabled or disabled since the system was started, the value will be 0." ::= { pfStatus 2 } pfStatusDebug OBJECT-TYPE SYNTAX INTEGER { none(0), urgent(1), misc(2), loud(3) } MAX-ACCESS read-only STATUS current DESCRIPTION "Indicates the debug level at which pf is running." ::= { pfStatus 3 } pfStatusHostId OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "The (unique) host identifier of the machine running pf." ::= { pfStatus 4 } -- -------------------------------------------------------------------------- -- -- counters -- pfCounterMatch OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of packets that matched a filter rule." ::= { pfCounter 1 } pfCounterBadOffset OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of packets with bad offset." ::= { pfCounter 2 } pfCounterFragment OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of fragmented packets." ::= { pfCounter 3 } pfCounterShort OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of short packets." ::= { pfCounter 4 } pfCounterNormalize OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of normalized packets." ::= { pfCounter 5 } pfCounterMemDrop OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of packets dropped due to memory limitations." ::= { pfCounter 6 } -- -------------------------------------------------------------------------- -- -- state table -- pfStateTableCount OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of entries in the state table." ::= { pfStateTable 1 } pfStateTableSearches OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of searches against the state table." ::= { pfStateTable 2 } pfStateTableInserts OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of entries inserted into the state table." ::= { pfStateTable 3 } pfStateTableRemovals OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of entries removed from the state table." ::= { pfStateTable 4 } -- -------------------------------------------------------------------------- -- -- source nodes -- pfSrcNodesCount OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of entries in the source tracking table." ::= { pfSrcNodes 1 } pfSrcNodesSearches OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of searches against the source tracking table." ::= { pfSrcNodes 2 } pfSrcNodesInserts OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of entries inserted into the source tracking table." ::= { pfSrcNodes 3 } pfSrcNodesRemovals OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of entries removed from the source tracking table." ::= { pfSrcNodes 4 } -- -------------------------------------------------------------------------- -- -- limits -- pfLimitsStates OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "Maximum number of 'keep state' rules in the ruleset." ::= { pfLimits 1 } pfLimitsSrcNodes OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "Maximum number of 'sticky-address' or 'source-track' rules in the ruleset." ::= { pfLimits 2 } pfLimitsFrags OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "Maximum number of 'scrub' rules in the ruleset." ::= { pfLimits 3 } -- -------------------------------------------------------------------------- -- -- timeouts -- pfTimeoutsTcpFirst OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "State after the first packet in a connection." ::= { pfTimeouts 1 } pfTimeoutsTcpOpening OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "State before the destination host ever sends a packet." ::= { pfTimeouts 2 } pfTimeoutsTcpEstablished OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The fully established state." ::= { pfTimeouts 3 } pfTimeoutsTcpClosing OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "State after the first FIN has been sent." ::= { pfTimeouts 4 } pfTimeoutsTcpFinWait OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "State after both FINs have been exchanged and the connection is closed." ::= { pfTimeouts 5 } pfTimeoutsTcpClosed OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "State after one endpoint sends an RST." ::= { pfTimeouts 6 } pfTimeoutsUdpFirst OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "State after the first packet." ::= { pfTimeouts 7 } pfTimeoutsUdpSingle OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "State if the source host sends more than one packet but the destination host has never sent one back." ::= { pfTimeouts 8 } pfTimeoutsUdpMultiple OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "State if both hosts have sent packets." ::= { pfTimeouts 9 } pfTimeoutsIcmpFirst OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "State after the first packet." ::= { pfTimeouts 10 } pfTimeoutsIcmpError OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "State after an ICMP error came back in response to an ICMP packet." ::= { pfTimeouts 11 } pfTimeoutsOtherFirst OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "State after the first packet." ::= { pfTimeouts 12 } pfTimeoutsOtherSingle OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "State if the source host sends more than one packet but the destination host has never sent one back." ::= { pfTimeouts 13 } pfTimeoutsOtherMultiple OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "State if both hosts have sent packets." ::= { pfTimeouts 14 } pfTimeoutsFragment OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "Seconds before an unassembled fragment is expired." ::= { pfTimeouts 15 } pfTimeoutsInterval OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "Interval between purging expired states and fragments." ::= { pfTimeouts 16 } pfTimeoutsAdaptiveStart OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "When the number of state entries exceeds this value, adaptive scaling begins." ::= { pfTimeouts 17 } pfTimeoutsAdaptiveEnd OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "When reaching this number of state entries, all timeout values become zero, effectively purging all state entries immediately." ::= { pfTimeouts 18 } pfTimeoutsSrcNode OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "Length of time to retain a source tracking entry after the last state expires." ::= { pfTimeouts 19 } -- -------------------------------------------------------------------------- -- -- log interface -- pfLogInterfaceName OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "The name of the interface configured with 'set loginterface'. If no interface has been configured, the object will be empty." ::= { pfLogInterface 1 } pfLogInterfaceIp4BytesIn OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of IPv4 bytes passed in on the loginterface." ::= { pfLogInterface 2 } pfLogInterfaceIp4BytesOut OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of IPv4 bytes passed out on the loginterface." ::= { pfLogInterface 3 } pfLogInterfaceIp4PktsInPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of IPv4 packets passed in on the loginterface." ::= { pfLogInterface 4 } pfLogInterfaceIp4PktsInDrop OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of IPv4 packets dropped coming in on the loginterface." ::= { pfLogInterface 5 } pfLogInterfaceIp4PktsOutPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of IPv4 packets passed out on the loginterface." ::= { pfLogInterface 6 } pfLogInterfaceIp4PktsOutDrop OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of IPv4 packets dropped going out on the loginterface." ::= { pfLogInterface 7 } pfLogInterfaceIp6BytesIn OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of IPv6 bytes passed in on the loginterface." ::= { pfLogInterface 8 } pfLogInterfaceIp6BytesOut OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of IPv6 bytes passed out on the loginterface." ::= { pfLogInterface 9 } pfLogInterfaceIp6PktsInPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of IPv6 packets passed in on the loginterface." ::= { pfLogInterface 10 } pfLogInterfaceIp6PktsInDrop OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of IPv6 packets dropped coming in on the loginterface." ::= { pfLogInterface 11 } pfLogInterfaceIp6PktsOutPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of IPv6 packets passed out on the loginterface." ::= { pfLogInterface 12 } pfLogInterfaceIp6PktsOutDrop OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "Number of IPv6 packets dropped going out on the loginterface." ::= { pfLogInterface 13 } -- -------------------------------------------------------------------------- -- -- interfaces -- pfInterfacesIfNumber OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of network interfaces on this system." ::= { pfInterfaces 1 } pfInterfacesIfTable OBJECT-TYPE SYNTAX SEQUENCE OF PfInterfacesIfEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Table of network interfaces, indexed on pfInterfacesIfNumber." ::= { pfInterfaces 2 } pfInterfacesIfEntry OBJECT-TYPE SYNTAX PfInterfacesIfEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry in the pfInterfacesIfTable containing information about a particular network interface in the machine." INDEX { pfInterfacesIfIndex } ::= { pfInterfacesIfTable 1 } PfInterfacesIfEntry ::= SEQUENCE { pfInterfacesIfIndex Integer32, pfInterfacesIfDescr OCTET STRING, pfInterfacesIfType INTEGER, pfInterfacesIfTZero TimeTicks, pfInterfacesIfRefsState Null, pfInterfacesIfRefsRule Unsigned32, pfInterfacesIf4BytesInPass Counter64, pfInterfacesIf4BytesInBlock Counter64, pfInterfacesIf4BytesOutPass Counter64, pfInterfacesIf4BytesOutBlock Counter64, pfInterfacesIf4PktsInPass Counter64, pfInterfacesIf4PktsInBlock Counter64, pfInterfacesIf4PktsOutPass Counter64, pfInterfacesIf4PktsOutBlock Counter64, pfInterfacesIf6BytesInPass Counter64, pfInterfacesIf6BytesInBlock Counter64, pfInterfacesIf6BytesOutPass Counter64, pfInterfacesIf6BytesOutBlock Counter64, pfInterfacesIf6PktsInPass Counter64, pfInterfacesIf6PktsInBlock Counter64, pfInterfacesIf6PktsOutPass Counter64, pfInterfacesIf6PktsOutBlock Counter64 } pfInterfacesIfIndex OBJECT-TYPE SYNTAX Integer32 (1..2147483647) MAX-ACCESS not-accessible STATUS current DESCRIPTION "A unique value, greater than zero, for each interface." ::= { pfInterfacesIfEntry 1 } pfInterfacesIfDescr OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "The name of the interface." ::= { pfInterfacesIfEntry 2 } pfInterfacesIfType OBJECT-TYPE SYNTAX INTEGER { group(0), instance(1), detached(2) } MAX-ACCESS read-only STATUS current DESCRIPTION "Indicates whether the interface is a group inteface, an interface instance, or whether it has been removed or destroyed." ::= { pfInterfacesIfEntry 3 } pfInterfacesIfTZero OBJECT-TYPE SYNTAX TimeTicks UNITS "1/100th of a Second" MAX-ACCESS read-only STATUS current DESCRIPTION "Time since statistics were last reset or since the interface was loaded." ::= { pfInterfacesIfEntry 4 } pfInterfacesIfRefsState OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of state and/or source track entries referencing this interface." ::= { pfInterfacesIfEntry 5 } pfInterfacesIfRefsRule OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of rules referencing this interface." ::= { pfInterfacesIfEntry 6 } pfInterfacesIf4BytesInPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of IPv4 bytes passed coming in on this interface." ::= { pfInterfacesIfEntry 7 } pfInterfacesIf4BytesInBlock OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of IPv4 bytes blocked coming in on this interface." ::= { pfInterfacesIfEntry 8 } pfInterfacesIf4BytesOutPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of IPv4 bytes passed going out on this interface." ::= { pfInterfacesIfEntry 9 } pfInterfacesIf4BytesOutBlock OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of IPv4 bytes blocked going out on this interface." ::= { pfInterfacesIfEntry 10 } pfInterfacesIf4PktsInPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of IPv4 packets passed coming in on this interface." ::= { pfInterfacesIfEntry 11 } pfInterfacesIf4PktsInBlock OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of IPv4 packets blocked coming in on this interface." ::= { pfInterfacesIfEntry 12 } pfInterfacesIf4PktsOutPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of IPv4 packets passed going out on this interface." ::= { pfInterfacesIfEntry 13 } pfInterfacesIf4PktsOutBlock OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of IPv4 packets blocked going out on this interface." ::= { pfInterfacesIfEntry 14 } pfInterfacesIf6BytesInPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of IPv6 bytes passed coming in on this interface." ::= { pfInterfacesIfEntry 15 } pfInterfacesIf6BytesInBlock OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of IPv6 bytes blocked coming in on this interface." ::= { pfInterfacesIfEntry 16 } pfInterfacesIf6BytesOutPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of IPv6 bytes passed going out on this interface." ::= { pfInterfacesIfEntry 17 } pfInterfacesIf6BytesOutBlock OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of IPv6 bytes blocked going out on this interface." ::= { pfInterfacesIfEntry 18 } pfInterfacesIf6PktsInPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of IPv6 packets passed coming in on this interface." ::= { pfInterfacesIfEntry 19 } pfInterfacesIf6PktsInBlock OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of IPv6 packets blocked coming in on this interface." ::= { pfInterfacesIfEntry 20 } pfInterfacesIf6PktsOutPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of IPv6 packets passed going out on this interface." ::= { pfInterfacesIfEntry 21 } pfInterfacesIf6PktsOutBlock OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of IPv6 packets blocked going out on this interface." ::= { pfInterfacesIfEntry 22 } -- -------------------------------------------------------------------------- -- -- tables -- pfTablesTblNumber OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of tables on this system." ::= { pfTables 1 } pfTablesTblTable OBJECT-TYPE SYNTAX SEQUENCE OF PfTablesTblEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Table of tables, index on pfTablesTblIndex." ::= { pfTables 2 } pfTablesTblEntry OBJECT-TYPE SYNTAX PfTablesTblEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Any entry in the pfTablesTblTable containing information about a particular table on the system." INDEX { pfTablesTblIndex } ::= { pfTablesTblTable 1 } PfTablesTblEntry ::= SEQUENCE { pfTablesTblIndex Integer32, pfTablesTblDescr OCTET STRING, pfTablesTblCount Integer32, pfTablesTblTZero TimeTicks, pfTablesTblRefsAnchor Integer32, pfTablesTblRefsRule Integer32, pfTablesTblEvalMatch Counter64, pfTablesTblEvalNoMatch Counter64, pfTablesTblBytesInPass Counter64, pfTablesTblBytesInBlock Counter64, pfTablesTblBytesInXPass Counter64, pfTablesTblBytesOutPass Counter64, pfTablesTblBytesOutBlock Counter64, pfTablesTblBytesOutXPass Counter64, pfTablesTblPktsInPass Counter64, pfTablesTblPktsInBlock Counter64, pfTablesTblPktsInXPass Counter64, pfTablesTblPktsOutPass Counter64, pfTablesTblPktsOutBlock Counter64, pfTablesTblPktsOutXPass Counter64 } pfTablesTblIndex OBJECT-TYPE SYNTAX Integer32 (1..2147483647) MAX-ACCESS not-accessible STATUS current DESCRIPTION "A unique value, greater than zero, for each table." ::= { pfTablesTblEntry 1 } pfTablesTblDescr OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "The name of the table." ::= { pfTablesTblEntry 2 } pfTablesTblCount OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of addresses in the table." ::= { pfTablesTblEntry 3 } pfTablesTblTZero OBJECT-TYPE SYNTAX TimeTicks UNITS "1/100th of a Second" MAX-ACCESS read-only STATUS current DESCRIPTION "The time passed since the statistics of this table were last cleared or the time since this table was loaded, whichever is sooner." ::= { pfTablesTblEntry 4 } pfTablesTblRefsAnchor OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of anchors referencing this table." ::= { pfTablesTblEntry 5 } pfTablesTblRefsRule OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of rules referencing this table." ::= { pfTablesTblEntry 6 } pfTablesTblEvalMatch OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of evaluations returning a match." ::= { pfTablesTblEntry 7 } pfTablesTblEvalNoMatch OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of evaluations not returning a match." ::= { pfTablesTblEntry 8 } pfTablesTblBytesInPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of bytes passed in matching the table." ::= { pfTablesTblEntry 9 } pfTablesTblBytesInBlock OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of bytes blocked coming in matching the table." ::= { pfTablesTblEntry 10 } pfTablesTblBytesInXPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of bytes statefully passed in where the state entry refers to the table, but the table no longer contains the address in question." ::= { pfTablesTblEntry 11 } pfTablesTblBytesOutPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of bytes passed out matching the table." ::= { pfTablesTblEntry 12 } pfTablesTblBytesOutBlock OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of bytes blocked going out matching the table." ::= { pfTablesTblEntry 13 } pfTablesTblBytesOutXPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of bytes statefully passed out where the state entry refers to the table, but the table no longer contains the address in question." ::= { pfTablesTblEntry 14 } pfTablesTblPktsInPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of packets passed in matching the table." ::= { pfTablesTblEntry 15 } pfTablesTblPktsInBlock OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of packets blocked coming in matching the table." ::= { pfTablesTblEntry 16 } pfTablesTblPktsInXPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of packets statefully passed in where the state entry refers to the table, but the table no longer contains the address in question." ::= { pfTablesTblEntry 17 } pfTablesTblPktsOutPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of packets passed out matching the table." ::= { pfTablesTblEntry 18 } pfTablesTblPktsOutBlock OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of packets blocked going out matching the table." ::= { pfTablesTblEntry 19 } pfTablesTblPktsOutXPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of packets statefully passed out where the state entry refers to the table, but the table no longer contains the address in question." ::= { pfTablesTblEntry 20 } pfTablesAddrTable OBJECT-TYPE SYNTAX SEQUENCE OF PfTablesAddrEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Table of addresses from every table on the system." ::= { pfTables 3 } pfTablesAddrEntry OBJECT-TYPE SYNTAX PfTablesAddrEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry in the pfTablesAddrTable containing information about a particular entry in a table." INDEX { pfTablesAddrIndex } ::= { pfTablesAddrTable 1 } PfTablesAddrEntry ::= SEQUENCE { pfTablesAddrIndex Integer32, pfTablesAddrNetType InetAddressType, pfTablesAddrNet InetAddress, pfTablesAddrPrefix InetAddressPrefixLength, pfTablesAddrTZero TimeTicks, pfTablesAddrBytesInPass Counter64, pfTablesAddrBytesInBlock Counter64, pfTablesAddrBytesOutPass Counter64, pfTablesAddrBytesOutBlock Counter64, pfTablesAddrPktsInPass Counter64, pfTablesAddrPktsInBlock Counter64, pfTablesAddrPktsOutPass Counter64, pfTablesAddrPktsOutBlock Counter64 } pfTablesAddrIndex OBJECT-TYPE SYNTAX Integer32 (1..2147483647) MAX-ACCESS not-accessible STATUS current DESCRIPTION "A unique value, greater than zero, for each address." ::= { pfTablesAddrEntry 1 } pfTablesAddrNetType OBJECT-TYPE SYNTAX InetAddressType MAX-ACCESS read-only STATUS current DESCRIPTION "The type of address in the corresponding pfTablesAddrNet object." ::= { pfTablesAddrEntry 2 } pfTablesAddrNet OBJECT-TYPE SYNTAX InetAddress MAX-ACCESS read-only STATUS current DESCRIPTION "The IP address of this particular table entry." ::= { pfTablesAddrEntry 3 } pfTablesAddrPrefix OBJECT-TYPE SYNTAX InetAddressPrefixLength MAX-ACCESS read-only STATUS current DESCRIPTION "The CIDR netmask of this particular table entry." ::= { pfTablesAddrEntry 4 } pfTablesAddrTZero OBJECT-TYPE SYNTAX TimeTicks UNITS "1/100th of a Second" MAX-ACCESS read-only STATUS current DESCRIPTION "The time passed since this entry's statistics were last cleared, or the time passed since this entry was loaded into the table, whichever is sooner." ::= { pfTablesAddrEntry 5 } pfTablesAddrBytesInPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of inbound bytes passed as a result of this entry." ::= { pfTablesAddrEntry 6 } pfTablesAddrBytesInBlock OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of inbound bytes blocked as a result of this entry." ::= { pfTablesAddrEntry 7 } pfTablesAddrBytesOutPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of outbound bytes passed as a result of this entry." ::= { pfTablesAddrEntry 8 } pfTablesAddrBytesOutBlock OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of outbound bytes blocked as a result of this entry." ::= { pfTablesAddrEntry 9 } pfTablesAddrPktsInPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of inbound packets passed as a result of this entry." ::= { pfTablesAddrEntry 10 } pfTablesAddrPktsInBlock OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of inbound packets blocked as a result of this entry." ::= { pfTablesAddrEntry 11 } pfTablesAddrPktsOutPass OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of outbound packets passed as a result of this entry." ::= { pfTablesAddrEntry 12 } pfTablesAddrPktsOutBlock OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of outbound packets blocked as a result of this entry." ::= { pfTablesAddrEntry 13 } -- -------------------------------------------------------------------------- -- -- Altq information -- pfAltqQueueNumber OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of queues in the active set." ::= { pfAltq 1 } pfAltqQueueTable OBJECT-TYPE SYNTAX SEQUENCE OF PfAltqQueueEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Table containing the rules that are active on this system." ::= { pfAltq 2 } pfAltqQueueEntry OBJECT-TYPE SYNTAX PfAltqQueueEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry in the pfAltqQueueTable table." INDEX { pfAltqQueueIndex } ::= { pfAltqQueueTable 1 } PfAltqQueueEntry ::= SEQUENCE { pfAltqQueueIndex Integer32, pfAltqQueueDescr OCTET STRING, pfAltqQueueParent OCTET STRING, pfAltqQueueScheduler INTEGER, pfAltqQueueBandwidth Unsigned32, pfAltqQueuePriority Integer32, pfAltqQueueLimit Integer32 } pfAltqQueueIndex OBJECT-TYPE SYNTAX Integer32 (1..2147483647) MAX-ACCESS not-accessible STATUS current DESCRIPTION "A unique value, greater than zero, for each queue." ::= { pfAltqQueueEntry 1 } pfAltqQueueDescr OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "The name of the queue." ::= { pfAltqQueueEntry 2 } pfAltqQueueParent OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "Name of the queue's parent if it has one." ::= { pfAltqQueueEntry 3 } pfAltqQueueScheduler OBJECT-TYPE SYNTAX INTEGER { cbq(1), hfsc(8), priq(11) } MAX-ACCESS read-only STATUS current DESCRIPTION "Scheduler algorithm implemented by this queue." ::= { pfAltqQueueEntry 4 } pfAltqQueueBandwidth OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "Bandwitch assigned to this queue." ::= { pfAltqQueueEntry 5 } pfAltqQueuePriority OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "Priority level of the queue." ::= { pfAltqQueueEntry 6 } pfAltqQueueLimit OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "Maximum number of packets in the queue." ::= { pfAltqQueueEntry 7 } pfLabelsLblNumber OBJECT-TYPE SYNTAX Integer32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of labeled filter rules on this system." ::= { pfLabels 1 } pfLabelsLblTable OBJECT-TYPE SYNTAX SEQUENCE OF PfLabelsLblEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Table of filter rules, index on pfLabelsLblIndex." ::= { pfLabels 2 } pfLabelsLblEntry OBJECT-TYPE SYNTAX PfLabelsLblEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Any entry in the pfLabelsLblTable containing information about a particular filter rule on the system." INDEX { pfLabelsLblIndex } ::= { pfLabelsLblTable 1 } PfLabelsLblEntry ::= SEQUENCE { pfLabelsLblIndex Integer32, pfLabelsLblName OCTET STRING, pfLabelsLblEvals Counter64, pfLabelsLblBytesIn Counter64, pfLabelsLblBytesOut Counter64, pfLabelsLblPktsIn Counter64, pfLabelsLblPktsOut Counter64 } pfLabelsLblIndex OBJECT-TYPE SYNTAX Integer32 (1..2147483647) MAX-ACCESS not-accessible STATUS current DESCRIPTION "A unique value, greater than zero, for each label." ::= { pfLabelsLblEntry 1 } pfLabelsLblName OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "The name of the rule label." ::= { pfLabelsLblEntry 2 } pfLabelsLblEvals OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of rule evaluations." ::= { pfLabelsLblEntry 3 } pfLabelsLblBytesIn OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of incoming bytes matched by the rule." ::= { pfLabelsLblEntry 4 } pfLabelsLblBytesOut OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of outgoing bytes matched by the rule." ::= { pfLabelsLblEntry 5 } pfLabelsLblPktsIn OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of incoming packets matched by the rule." ::= { pfLabelsLblEntry 6 } pfLabelsLblPktsOut OBJECT-TYPE SYNTAX Counter64 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of outgoing packets matched by the rule." ::= { pfLabelsLblEntry 7 } END diff --git a/usr.sbin/bsnmpd/modules/snmp_wlan/BEGEMOT-WIRELESS-MIB.txt b/usr.sbin/bsnmpd/modules/snmp_wlan/BEGEMOT-WIRELESS-MIB.txt index 69873eddf33d..a377b7b6988d 100644 --- a/usr.sbin/bsnmpd/modules/snmp_wlan/BEGEMOT-WIRELESS-MIB.txt +++ b/usr.sbin/bsnmpd/modules/snmp_wlan/BEGEMOT-WIRELESS-MIB.txt @@ -1,3897 +1,3895 @@ -- -- Copyright (C) 2010 The FreeBSD Foundation -- -- This documentation was written by Shteryana Sotirova Shopova under -- sponsorship from the FreeBSD Foundation. -- -- Redistribution and use in source and binary forms, with or without -- modification, are permitted provided that the following conditions -- are met: -- 1. Redistributions of source code must retain the above copyright -- notice, this list of conditions and the following disclaimer. -- 2. Redistributions in binary form must reproduce the above copyright -- notice, this list of conditions and the following disclaimer in the -- documentation and/or other materials provided with the distribution. -- -- THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND -- ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -- IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -- ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE -- FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -- DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -- OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -- HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -- LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -- OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -- SUCH DAMAGE. -- --- $FreeBSD$ --- BEGEMOT-WIRELESS-MIB DEFINITIONS ::= BEGIN IMPORTS MODULE-IDENTITY, OBJECT-TYPE, NOTIFICATION-TYPE, Counter32, Integer32, TimeTicks, Unsigned32, mib-2 FROM SNMPv2-SMI TEXTUAL-CONVENTION, MacAddress, TruthValue, RowStatus, DisplayString FROM SNMPv2-TC InterfaceIndex, ifIndex FROM IF-MIB begemot FROM BEGEMOT-MIB; begemotWlan MODULE-IDENTITY LAST-UPDATED "201005170000Z" ORGANIZATION "The FreeBSD Foundation" CONTACT-INFO " Shteryana Shopova Postal: 12 Andrey Lyapchev Blvd. block 2, ap.19 1797 Sofia Bulgaria Fax: N/A E-Mail: syrinx@FreeBSD.org" DESCRIPTION "The Begemot MIB for managing IEEE802.11 interfaces." REVISION "201005170000Z" DESCRIPTION "Initial revision." ::= { begemot 210 } -- ---------------------------------------------------------- -- -- Textual conventions -- ---------------------------------------------------------- -- WlanMgmtReasonCode ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Enumeration of reason and codes used in IEEE802.11 management frames to indicate why an action took place." SYNTAX INTEGER { unspecified(1), authenticationExpire(2), authenticationLeave(3), associationExpire(4), associationTooMany(5), notAuthenticated(6), notAssociated(7), associationLeave(8), associationNotAuthenticated(9), -- XXX: TODO - FIXME dissassocPwrcapBad(10), dissassocSuperchanBad(11), ieInvalid(13), micFailure(14), fourWayHandshakeTimeout(15), groupKeyUpdateTimeout(16), ieIn4FourWayDiffers(17), groupCipherInvalid(18), pairwiseCiherInvalid(19), akmpInvalid(20), unsupportedRsnIeVersion(21), invalidRsnIeCap(22), dot1xAuthFailed(23), cipherSuiteRejected(24), unspeciffiedQos(32), insufficientBw(33), tooManyFrames(34), outsideTxOp(35), leavingQbss(36), badMechanism(37), setupNeeded(38), timeout(39) } WlanMgmtMeshReasonCode ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Enumeration of reason and codes used in IEEE802.11 mesh routing management frames to indicate why an action took place." SYNTAX INTEGER { -- XXX: TODO - FIXME peerLinkCancelled(2), maxPeers(3), cpViolation(4), closeRcvd(5), maxRetries(6), confirmTimeout(7), invalidGtk(8), inconsistentParams(9), invalidSecurity(10), perrUnspecified(11), perrNoFI(12), perrDestUnreach(13) } WlanMgmtStatusCode ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Enumeration of reason and codes used in IEEE802.11 management frames to indicate what the result of an operation is." SYNTAX INTEGER { -- XXX: TODO - FIXME success(0), unspecified(1), capabilitiesInfo(10), notAssociated(11), other(12), algorithm(13), sequence(14), challenge(15), timeout(16), tooMany(17), basicRate(18), spRequired(19), pbccRequired(20), caRequired(21), specMgmtRequired(22), pwrcapRequire(23), superchanRequired(24), shortSlotRequired(25), dssofdmRequired(26), missingHTCaps(27), invalidIE(40), groupCipherInvalid(41), pairwiseCipherInvalid(42), akmpInvalid(43), unsupportedRsnIEVersion(44), invalidRsnIECap(45), cipherSuiteRejected(46) } WlanRegDomainCode ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Enumeration of regdomain codes." SYNTAX INTEGER { fcc(1), ca(2), etsi(3), etsi2(4), etsi3(5), fcc3(6), japan(7), korea(8), apac(9), apac2(10), apac3(11), row(12), none(13), debug(14), sr9(15), xr9(16), gz901(17) } WlanIfaceDot11nPduType ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "Enumeration of values for PDU transmit/receive enabled." SYNTAX INTEGER { disabled(0), rxOnly(1), txOnly(2), txAndRx(3) } WlanPeerCapabilityFlags ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "A list of capability bits that may be advertised by a peer." SYNTAX BITS { ess(1), ibss(2), cfPollable(3), cfPollRequest(4), privacy(5), shortPreamble(6), pbcc(7), channelAgility(8), shortSlotTime(9), rsn(10), dsssofdm(11) } WlanIfPhyMode ::= TEXTUAL-CONVENTION STATUS current DESCRIPTION "A list of wireless PHY operating modes." SYNTAX INTEGER { auto(1), dot11a(2), dot11b(3), dot11g(4), fh(5), turboA(6), turboG(7), sturboA(8), dot11na(9), dot11ng(10), ofdmHalf(11), ofdmQuarter(12) } -- ---------------------------------------------------------- -- -- Subtrees in the Begemot Wireless MIB -- ---------------------------------------------------------- -- begemotWlanNotifications OBJECT IDENTIFIER ::= { begemotWlan 0 } begemotWlanInterface OBJECT IDENTIFIER ::= { begemotWlan 1 } begemotWlanScanning OBJECT IDENTIFIER ::= { begemotWlan 2 } begemotWlanStatistics OBJECT IDENTIFIER ::= { begemotWlan 3 } begemotWlanWep OBJECT IDENTIFIER ::= { begemotWlan 4 } begemotWlanMACAccessControl OBJECT IDENTIFIER ::= { begemotWlan 5 } begemotWlanMeshRouting OBJECT IDENTIFIER ::= { begemotWlan 6 } -- ---------------------------------------------------------- -- -- begemotWlanMultimedia OBJECT IDENTIFIER ::= { begemotWlan 7 } -- ---------------------------------------------------------- -- -- ---------------------------------------------------------- -- -- Cloned wireless interfaces' database -- ---------------------------------------------------------- -- wlanInterfaceTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanInterfaceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains the list of cloned wireless interfaces created on the system." ::= { begemotWlanInterface 1 } wlanInterfaceEntry OBJECT-TYPE SYNTAX WlanInterfaceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Information for a cloned wireless interface." INDEX { wlanIfaceName } ::= { wlanInterfaceTable 1 } WlanInterfaceEntry ::= SEQUENCE { wlanIfaceIndex InterfaceIndex, wlanIfaceName DisplayString, wlanParentIfName DisplayString, wlanIfaceOperatingMode INTEGER, wlanIfaceFlags BITS, wlanIfaceBssid MacAddress, wlanIfaceLocalAddress MacAddress, wlanIfaceStatus RowStatus, wlanIfaceState INTEGER } wlanIfaceIndex OBJECT-TYPE SYNTAX InterfaceIndex MAX-ACCESS read-only STATUS current DESCRIPTION "The ifIndex of this cloned wireless interface." ::= { wlanInterfaceEntry 1 } wlanIfaceName OBJECT-TYPE SYNTAX DisplayString (SIZE(1..32)) MAX-ACCESS read-create STATUS current DESCRIPTION "The name of this cloned wireless interface." ::= { wlanInterfaceEntry 2 } wlanParentIfName OBJECT-TYPE SYNTAX DisplayString (SIZE(1..32)) MAX-ACCESS read-create STATUS current DESCRIPTION "The name of this cloned wireless interface's parent hardware interface." ::= { wlanInterfaceEntry 3 } wlanIfaceOperatingMode OBJECT-TYPE SYNTAX INTEGER { ibss(0), station(1), wds(2), adhocDemo(3), hostAp(4), monitor(5), meshPoint(6), tdma(7) } MAX-ACCESS read-create STATUS current DESCRIPTION "The desired operating mode of the cloned wireless interface." DEFVAL { station } ::= { wlanInterfaceEntry 4 } wlanIfaceFlags OBJECT-TYPE SYNTAX BITS { uniqueBssid(1), noBeacons(2), wdsLegacy(3) } MAX-ACCESS read-create STATUS current DESCRIPTION "Flags per cloned wireless interface used during creation." ::= { wlanInterfaceEntry 5 } wlanIfaceBssid OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-create STATUS current DESCRIPTION "The BSSID assigned to a cloned wireless interface operating in WDS mode." ::= { wlanInterfaceEntry 6 } wlanIfaceLocalAddress OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-create STATUS current DESCRIPTION "The unique local MAC address assigned to the cloned wireless interface during creation." ::= { wlanInterfaceEntry 7 } wlanIfaceStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-create STATUS current DESCRIPTION "This column allows creation or deletion of cloned wireless interfaces." ::= { wlanInterfaceEntry 8 } wlanIfaceState OBJECT-TYPE SYNTAX INTEGER { up(1), down(2) } MAX-ACCESS read-create STATUS current DESCRIPTION "The operating state of the interface." ::= { wlanInterfaceEntry 9 } wlanIfParentTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanIfParentEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains information about the parent hardware interface of every cloned wireless interface in the system." ::= { begemotWlanInterface 2 } wlanIfParentEntry OBJECT-TYPE SYNTAX WlanIfParentEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Information for the parent hardware interface of a cloned wireless interface." AUGMENTS { wlanInterfaceEntry } ::= { wlanIfParentTable 1 } WlanIfParentEntry ::= SEQUENCE { wlanIfParentDriverCapabilities BITS, wlanIfParentCryptoCapabilities BITS, wlanIfParentHTCapabilities BITS } wlanIfParentDriverCapabilities OBJECT-TYPE SYNTAX BITS { station(1), ieee8023encap(2), athFastFrames(3), athTurbo(4), ibss(5), pmgt(6), hostAp(7), ahDemo(8), swRetry(9), txPmgt(10), shortSlot(11), shortPreamble(12), monitor(13), dfs(14), mbss(15), wpa1(16), wpa2(17), burst(18), wme(19), wds(20), bgScan(21), txFrag(22), tdma(23) } MAX-ACCESS read-only STATUS current DESCRIPTION "The driver capabilities of this cloned interface's parent." ::= { wlanIfParentEntry 1 } wlanIfParentCryptoCapabilities OBJECT-TYPE SYNTAX BITS { wep(1), tkip(2), aes(3), aesCcm(4), tkipMic(5), ckip(6) } MAX-ACCESS read-only STATUS current DESCRIPTION "The hardware cryptographic capabilities of this cloned interface's parent." ::= { wlanIfParentEntry 2 } wlanIfParentHTCapabilities OBJECT-TYPE SYNTAX BITS { ldpc(1), chwidth40(2), greenField(3), shortGi20(4), shortGi40(5), txStbc(6), delba(7), amsdu7935(8), dssscck40(9), psmp(10), fortyMHzIntolerant(11), lsigTxOpProt(12), htcAmpdu(13), htcAmsdu(14), htcHt(15), htcSmps(16), htcRifs(17) } MAX-ACCESS read-only STATUS current DESCRIPTION "The hardware High Throughput capabilities of this cloned interface's parent." ::= { wlanIfParentEntry 3 } wlanIfaceConfigTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanIfaceConfigEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains a list of configuration parameters per cloned wireless interface. Some of the parameters may not be applicable depending on the underlying device's hardware capabilities and operating mode of the virtual interface." ::= { begemotWlanInterface 3 } wlanIfaceConfigEntry OBJECT-TYPE SYNTAX WlanIfaceConfigEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of configuration parameters for a cloned wireless interface." AUGMENTS { wlanInterfaceEntry } ::= { wlanIfaceConfigTable 1 } WlanIfaceConfigEntry ::= SEQUENCE { wlanIfacePacketBurst TruthValue, wlanIfaceCountryCode OCTET STRING, wlanIfaceRegDomain INTEGER, wlanIfaceDesiredSsid OCTET STRING, wlanIfaceDesiredChannel INTEGER, wlanIfaceDynamicFreqSelection TruthValue, wlanIfaceFastFrames TruthValue, wlanIfaceDturbo TruthValue, wlanIfaceTxPower INTEGER, wlanIfaceFragmentThreshold INTEGER, wlanIfaceRTSThreshold INTEGER, wlanIfaceWlanPrivacySubscribe TruthValue, -- Parameters for station mode wlanIfaceBgScan TruthValue, wlanIfaceBgScanIdle INTEGER, wlanIfaceBgScanInterval INTEGER, wlanIfaceBeaconMissedThreshold INTEGER, wlanIfaceDesiredBssid MacAddress, wlanIfaceRoamingMode INTEGER, -- Additional parameters when operating in host-ap/ad-hoc mode wlanIfaceDot11d TruthValue, wlanIfaceDot11h TruthValue, wlanIfaceDynamicWds TruthValue, wlanIfacePowerSave TruthValue, wlanIfaceApBridge TruthValue, wlanIfaceBeaconInterval INTEGER, wlanIfaceDtimPeriod INTEGER, wlanIfaceHideSsid TruthValue, wlanIfaceInactivityProccess TruthValue, wlanIfaceDot11gProtMode INTEGER, wlanIfaceDot11gPureMode TruthValue, wlanIfaceDot11nPureMode TruthValue, wlanIfaceDot11nAmpdu INTEGER, wlanIfaceDot11nAmpduDensity INTEGER, wlanIfaceDot11nAmpduLimit INTEGER, wlanIfaceDot11nAmsdu INTEGER, wlanIfaceDot11nAmsduLimit INTEGER, wlanIfaceDot11nHighThroughput TruthValue, wlanIfaceDot11nHTCompatible TruthValue, wlanIfaceDot11nHTProtMode INTEGER, wlanIfaceDot11nRIFS TruthValue, wlanIfaceDot11nShortGI TruthValue, wlanIfaceDot11nSMPSMode INTEGER, -- Parameters when operating in tdma mode wlanIfaceTdmaSlot INTEGER, wlanIfaceTdmaSlotCount INTEGER, wlanIfaceTdmaSlotLength INTEGER, wlanIfaceTdmaBeaconInterval INTEGER } wlanIfacePacketBurst OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object controls whether packet bursting is enabled on the interface." ::= { wlanIfaceConfigEntry 1 } wlanIfaceCountryCode OBJECT-TYPE SYNTAX OCTET STRING (SIZE(3)) MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object controls the country regulatory constraints for operation of this wireless interface. The first two octets of this string is the two character country code as described in ISO/IEC 3166-1. The third octet shall contain one of the following: 1. an ASCII space character, if the regulations under which the interface is operating include all environments in the specified country. 2. an ASCII 'O' character, if the country's regulations are for Outdoor environment only. 3. an ASCII 'I' character, if the country's regulations are for Indoor environment only." ::= { wlanIfaceConfigEntry 2 } wlanIfaceRegDomain OBJECT-TYPE SYNTAX WlanRegDomainCode MAX-ACCESS read-write STATUS current DESCRIPTION "This object specifies the regulatory domain to use when calculating the regulatory constraints for operation of the interface." ::= { wlanIfaceConfigEntry 3 } wlanIfaceDesiredSsid OBJECT-TYPE SYNTAX OCTET STRING (SIZE(0..32)) MAX-ACCESS read-write STATUS current DESCRIPTION "The desired SSID for the interface as an ASCII string. Specifying an empty string shall remove the current configured SSID." ::= { wlanIfaceConfigEntry 4 } wlanIfaceDesiredChannel OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-write STATUS current DESCRIPTION "The desired operating channel for this interface. The value of this column is the channel index (wlanIfaceChannelId) of the corresponding entry from the wlanIfaceChannelTable. The interface status must be down so that the current operating channel may be set properly." ::= { wlanIfaceConfigEntry 5 } wlanIfaceDynamicFreqSelection OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether Dynamic Frequency Selection (DFS) as specified in 802.11h is enabled on an interface that supports 802.11h and DFS." DEFVAL { false } ::= { wlanIfaceConfigEntry 6 } wlanIfaceFastFrames OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object controls whether use of Atheros Fast Frames is enabled when when communicating with another Fast Frames-capable station. The value is only meaningful for interfaces that support Atheros Fast Frames." ::= { wlanIfaceConfigEntry 7 } wlanIfaceDturbo OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object controls whether use of Atheros Dynamic Turbo mode is enabled when when communicating with another Dynamic Turbo-capable station. The value is only meaningful for interfaces that support Atheros Dynamic Turbo mode." ::= { wlanIfaceConfigEntry 8 } wlanIfaceTxPower OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object controls the power used to transmit frames. Accepted values are in units of one tenths of a dBm in steps of .5 dBm, e.g setting the value of this object to 155 results in 15.5 dBm transmit power configured on the interface." ::= { wlanIfaceConfigEntry 9 } wlanIfaceFragmentThreshold OBJECT-TYPE SYNTAX INTEGER (256..2346) MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object controls the threshold for which transmitted frames are broken into fragments. Setting the value of this object to 2346 will disable transmit fragmentation." DEFVAL { 2346 } ::= { wlanIfaceConfigEntry 10 } wlanIfaceRTSThreshold OBJECT-TYPE SYNTAX INTEGER (1..2346) UNITS "bytes" MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object controls the threshold for which transmitted frames are preceded by transmission of an RTS control frame. Setting the value of this object to 2346 will disable transmission of RTS frames." DEFVAL { 2346 } ::= { wlanIfaceConfigEntry 11 } wlanIfaceWlanPrivacySubscribe OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether Wireless Privacy Subscriber support is enabled on the interface." ::= { wlanIfaceConfigEntry 12 } wlanIfaceBgScan OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether background scanning is enabled for an interface operating in station mode." ::= { wlanIfaceConfigEntry 13 } wlanIfaceBgScanIdle OBJECT-TYPE SYNTAX INTEGER UNITS "milliseconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies the minimum time a station must be idle before a background scan is initiated on an interface operating in station mode." DEFVAL { 250 } ::= { wlanIfaceConfigEntry 14 } wlanIfaceBgScanInterval OBJECT-TYPE SYNTAX INTEGER UNITS "seconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies the interval at which background scanning is attempted when operating in station mode." DEFVAL { 300 } ::= { wlanIfaceConfigEntry 15 } wlanIfaceBeaconMissedThreshold OBJECT-TYPE SYNTAX INTEGER (1..255) UNITS "frames" MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies the number of consecutive missed beacons before an interface operating in station mode will attempt to search for a new access point." DEFVAL { 7 } ::= { wlanIfaceConfigEntry 16 } wlanIfaceDesiredBssid OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies the MAC address of the desired access point to use when an interface is operating as a station." ::= { wlanIfaceConfigEntry 17 } wlanIfaceRoamingMode OBJECT-TYPE SYNTAX INTEGER { device(1), auto(2), manual(3) } MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies the desired system behavior when the interface is operating as a station and the communication with the current access point is broken." DEFVAL { auto } ::= { wlanIfaceConfigEntry 18 } wlanIfaceDot11d OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether 802.11d specification support is enabled." DEFVAL { false } ::= { wlanIfaceConfigEntry 19 } wlanIfaceDot11h OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether 802.11h support including spectrum management is enabled. The value is only meaningfull for interfaces that support 802.11h specification." DEFVAL { false } ::= { wlanIfaceConfigEntry 20 } wlanIfaceDynamicWds OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether Dynamic WDS (DWDS) support is enabled. The value is only meaningful for interfaces that support Dynamic WDS." ::= { wlanIfaceConfigEntry 21 } wlanIfacePowerSave OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether powersave operation is enabled. The value is only meaningful for interfaces that support powersave operation." ::= { wlanIfaceConfigEntry 22 } wlanIfaceApBridge OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether packets between wireless clients will be passed directly by an interface operating in host ap mode. Disabling it may be useful in situations when traffic between wireless clients needs to be processed with packet filtering." DEFVAL { true } ::= { wlanIfaceConfigEntry 23 } wlanIfaceBeaconInterval OBJECT-TYPE SYNTAX INTEGER (25..1000) MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies the interval at with beacon frames are sent when an interface is operating in ad-hoc or ap mode. The beacon interval is specified in TU's (1024 usecs)." DEFVAL { 100 } ::= { wlanIfaceConfigEntry 24 } wlanIfaceDtimPeriod OBJECT-TYPE SYNTAX INTEGER (1..15) MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies the DTIM period at which buffered multicast data frames are transmitted by an interface operating in host ap mode. Its value indicates the number of beacon intervals between DTIM." DEFVAL { 1 } ::= { wlanIfaceConfigEntry 25 } wlanIfaceHideSsid OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether broadcasting of the SSID in beacon frames and responding to undirected probe request frames is enabled for an interface operating in ap mode." DEFVAL { false } ::= { wlanIfaceConfigEntry 26 } wlanIfaceInactivityProccess OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether inactivity processing for associated station on an interface operating in ap mode is enabled." DEFVAL { true } ::= { wlanIfaceConfigEntry 27 } wlanIfaceDot11gProtMode OBJECT-TYPE SYNTAX INTEGER { off(1), cts(2), rtscts(3) } MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies the technique used for protecting OFDM frames in a mixed 11b/11g network." ::= { wlanIfaceConfigEntry 28 } wlanIfaceDot11gPureMode OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether only 802.11g-capable stations will be allowed to associate to an interface operating as access point in 802.11g mode." ::= { wlanIfaceConfigEntry 29 } wlanIfaceDot11nPureMode OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether only HT-capable stations will be allowed to associate to an interface operating as access point in 802.11n mode." ::= { wlanIfaceConfigEntry 30 } wlanIfaceDot11nAmpdu OBJECT-TYPE SYNTAX WlanIfaceDot11nPduType MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether sending and receiving of AMPDU frames is enabled on an interface operating in 802.11n mode." DEFVAL { txAndRx } ::= { wlanIfaceConfigEntry 31 } wlanIfaceDot11nAmpduDensity OBJECT-TYPE SYNTAX INTEGER (0|25|50|100|200|400|800|1600) UNITS "1/100ths-of-microsecond" MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies the AMPDU density parameter for an interface operating in 802.11n mode." ::= { wlanIfaceConfigEntry 32 } wlanIfaceDot11nAmpduLimit OBJECT-TYPE SYNTAX INTEGER (8192|16384|32768|65536) MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies a limit on the AMPDU packet size for receiving AMPDU frames for an interface operating in 802.11n mode." ::= { wlanIfaceConfigEntry 33 } wlanIfaceDot11nAmsdu OBJECT-TYPE SYNTAX WlanIfaceDot11nPduType MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether sending and receiving of AMSDU frames is enabled on an interface operating in 802.11n mode." DEFVAL { rxOnly } ::= { wlanIfaceConfigEntry 34 } wlanIfaceDot11nAmsduLimit OBJECT-TYPE SYNTAX INTEGER (3839|7935) MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies a limit on the AMSDU packet size when sending and receiving AMSDU frames for an interface operating in 802.11n mode." ::= { wlanIfaceConfigEntry 35 } wlanIfaceDot11nHighThroughput OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether use of High Throughput (HT) is enabled for an interface operating in 802.11n mode." DEFVAL { true } ::= { wlanIfaceConfigEntry 36 } wlanIfaceDot11nHTCompatible OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether use of compatibility support for pre-802.11n devices is enabled for an interface operating in 802.11n mode." DEFVAL { true } ::= { wlanIfaceConfigEntry 37 } wlanIfaceDot11nHTProtMode OBJECT-TYPE SYNTAX INTEGER { off(1), rts(2) } MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies the technique used for protecting HT frames in a mixed legacy/HT network for interfaces operating in 802.11n mode." DEFVAL { rts } ::= { wlanIfaceConfigEntry 38 } wlanIfaceDot11nRIFS OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether Reduced InterFrame Spacing (RIFS) is enabled for an interface operating in 802.11n mode on an HT channel." ::= { wlanIfaceConfigEntry 39 } wlanIfaceDot11nShortGI OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether use of Short Guard Interval is enabled on an interface operating in 802.11n mode on an HT channel." ::= { wlanIfaceConfigEntry 40 } wlanIfaceDot11nSMPSMode OBJECT-TYPE SYNTAX INTEGER { disabled(1), static(2), dynamic(3) } MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies whether use of Spatial Multiplexing Power Save (SMPS) is enabled on an interface operating in 802.11n mode and whether SMPS mode is set to Static or Dynamic. The value is only meaningfull for interfaces that support SMPS." ::= { wlanIfaceConfigEntry 41 } wlanIfaceTdmaSlot OBJECT-TYPE SYNTAX INTEGER (0..2) MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies the slot configuration to use when operating in TDMA mode." ::= { wlanIfaceConfigEntry 42 } wlanIfaceTdmaSlotCount OBJECT-TYPE SYNTAX INTEGER (0..2) MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies the number of slots to use to setup a BSS for an interface operating in TDMA mode." ::= { wlanIfaceConfigEntry 43 } wlanIfaceTdmaSlotLength OBJECT-TYPE SYNTAX INTEGER (150..65000) UNITS "microseconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies a slot length that each station has when a BSS is setup by an interface operating in TDMA mode." DEFVAL { 10000 } ::= { wlanIfaceConfigEntry 44 } wlanIfaceTdmaBeaconInterval OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies the number of superframes at which a beacon frame is sent to synchronize the TDMA slot timing for interfaces operating in TDMA mode." DEFVAL { 5 } ::= { wlanIfaceConfigEntry 45 } wlanIfacePeerTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanIfacePeerEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains information about the associated stations for an interface operating as an access point, or the stations identified as neighbors in the IBSS for an interface operating in adhoc mode." ::= { begemotWlanInterface 4 } wlanIfacePeerEntry OBJECT-TYPE SYNTAX WlanIfacePeerEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry that contains information for the associated stations for an interface operating as an access point, or the neighboring stations of an interface in adhoc mode." INDEX { wlanIfaceName, wlanIfacePeerAddress } ::= { wlanIfacePeerTable 1 } WlanIfacePeerEntry ::= SEQUENCE { wlanIfacePeerAddress MacAddress, wlanIfacePeerAssociationId INTEGER, wlanIfacePeerVlanTag INTEGER, wlanIfacePeerFrequency INTEGER, wlanIfacePeerCurrentTXRate INTEGER, wlanIfacePeerRxSignalStrength INTEGER, wlanIfacePeerIdleTimer INTEGER, wlanIfacePeerTxSequenceNo INTEGER, wlanIfacePeerRxSequenceNo INTEGER, wlanIfacePeerTxPower INTEGER, wlanIfacePeerCapabilities BITS, wlanIfacePeerFlags BITS } wlanIfacePeerAddress OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-only STATUS current DESCRIPTION "The MAC address of this peer." ::= { wlanIfacePeerEntry 1 } wlanIfacePeerAssociationId OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The ID of the associacition with this peer." ::= { wlanIfacePeerEntry 2 } wlanIfacePeerVlanTag OBJECT-TYPE SYNTAX INTEGER (0..4096) MAX-ACCESS read-write STATUS current DESCRIPTION "The Vlan Tag for traffic to/from this peer." ::= { wlanIfacePeerEntry 3 } wlanIfacePeerFrequency OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The operating frequency for the link with this peer." ::= { wlanIfacePeerEntry 4 } wlanIfacePeerCurrentTXRate OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The current transmit rate for this peer." ::= { wlanIfacePeerEntry 5 } wlanIfacePeerRxSignalStrength OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The average receive signal strength for this peer." ::= { wlanIfacePeerEntry 6 } wlanIfacePeerIdleTimer OBJECT-TYPE SYNTAX INTEGER UNITS "seconds" MAX-ACCESS read-only STATUS current DESCRIPTION "The value of this peer's inactivity timer." ::= { wlanIfacePeerEntry 7 } wlanIfacePeerTxSequenceNo OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The last sequence number transmitted to this peer." ::= { wlanIfacePeerEntry 8 } wlanIfacePeerRxSequenceNo OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The last sequence number received from this peer." ::= { wlanIfacePeerEntry 9 } wlanIfacePeerTxPower OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The transmit power limit for this peer." ::= { wlanIfacePeerEntry 10 } wlanIfacePeerCapabilities OBJECT-TYPE SYNTAX WlanPeerCapabilityFlags MAX-ACCESS read-only STATUS current DESCRIPTION "The capabilities advertised by this peer." ::= { wlanIfacePeerEntry 11 } wlanIfacePeerFlags OBJECT-TYPE SYNTAX BITS { authorizedForData(1), qosEnabled(2), erpEnabled(3), powerSaveMode(4), authRefHeld(5), htEnabled(6), htCompat(7), wpsAssoc(8), tsnAssoc(9), ampduRx(10), ampduTx(11), mimoPowerSave(12), sendRts(13), rifs(14), shortGiHT20(15), shortGiHT40(16), amsduRx(17), amsduTx(18) } MAX-ACCESS read-only STATUS current DESCRIPTION "The peer state flags." ::= { wlanIfacePeerEntry 12 } wlanIfaceChannelTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanIfaceChannelEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains information about the active channels for the cloned wireless interfaces in the system." ::= { begemotWlanInterface 5 } wlanIfaceChannelEntry OBJECT-TYPE SYNTAX WlanIfaceChannelEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry that contains active channel information for the wireless interface." INDEX { wlanIfaceName, wlanIfaceChannelId } ::= { wlanIfaceChannelTable 1 } WlanIfaceChannelEntry ::= SEQUENCE { wlanIfaceChannelId INTEGER, wlanIfaceChannelIeeeId INTEGER, wlanIfaceChannelType INTEGER, wlanIfaceChannelFlags BITS, wlanIfaceChannelFrequency INTEGER, wlanIfaceChannelMaxRegPower INTEGER, wlanIfaceChannelMaxTxPower INTEGER, wlanIfaceChannelMinTxPower INTEGER, wlanIfaceChannelState BITS, wlanIfaceChannelHTExtension INTEGER, wlanIfaceChannelMaxAntennaGain INTEGER } wlanIfaceChannelId OBJECT-TYPE SYNTAX INTEGER (1..1536) MAX-ACCESS not-accessible STATUS current DESCRIPTION "The index of this channel entry." ::= { wlanIfaceChannelEntry 1 } wlanIfaceChannelIeeeId OBJECT-TYPE SYNTAX INTEGER (1..256) MAX-ACCESS read-only STATUS current DESCRIPTION "The channel IEEE ID." ::= { wlanIfaceChannelEntry 2 } wlanIfaceChannelType OBJECT-TYPE SYNTAX INTEGER { fhss(1), dot11a(2), dot11b(3), dot11g(4), tenMHz(5), fiveMHz(6), turbo(7), ht(8) } MAX-ACCESS read-only STATUS current DESCRIPTION "The operating channel type for this entry." ::= { wlanIfaceChannelEntry 3 } wlanIfaceChannelFlags OBJECT-TYPE SYNTAX BITS { turbo(1), cck(2), ofdm(3), spectrum2Ghz(4), spectrum5Ghz(5), passiveScan(6), dynamicCckOfdm(7), gfsk(8), spectrum900Mhz(9), dot11aStaticTurbo(10), halfRate(11), quarterRate(12), ht20(13), ht40u(14), ht40d(15), dfs(16), xmit4ms(17), noAdhoc(18), noHostAp(19), dot11d(20) } MAX-ACCESS read-only STATUS current DESCRIPTION "The channel flags." ::= { wlanIfaceChannelEntry 4 } wlanIfaceChannelFrequency OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The channel frequency setting in MHz." ::= { wlanIfaceChannelEntry 5 } wlanIfaceChannelMaxRegPower OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum regulatory tx power in dBm for this channel." ::= { wlanIfaceChannelEntry 6 } wlanIfaceChannelMaxTxPower OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum tx power in units of .5 dBm for this channel." ::= { wlanIfaceChannelEntry 7 } wlanIfaceChannelMinTxPower OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The minimum tx power in units of .5 dBm for this channel." ::= { wlanIfaceChannelEntry 8 } wlanIfaceChannelState OBJECT-TYPE SYNTAX BITS { radar(1), cacDone(2), interferenceDetected(3), radarClear(4) } MAX-ACCESS read-only STATUS current DESCRIPTION "The channel dynamic state." ::= { wlanIfaceChannelEntry 9 } wlanIfaceChannelHTExtension OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The HT40 extension channel number." ::= { wlanIfaceChannelEntry 10 } wlanIfaceChannelMaxAntennaGain OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The maximum antenna gain in units of .5 dBm." ::= { wlanIfaceChannelEntry 11 } -- ---------------------------------------------------------- -- -- The Scan requests/results for cloned wireless interfaces -- ---------------------------------------------------------- -- wlanScanConfigTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanScanConfigEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains a configuration for channel scanning initiated via SNMP." ::= { begemotWlanScanning 1 } wlanScanConfigEntry OBJECT-TYPE SYNTAX WlanScanConfigEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Per cloned wireless interface channel scan configuration data. The entry will be empty if no scans were initiated via SNMP." INDEX { wlanIfaceName } ::= { wlanScanConfigTable 1 } WlanScanConfigEntry ::= SEQUENCE { wlanScanFlags BITS, wlanScanDuration INTEGER, wlanScanMinChannelDwellTime INTEGER, wlanScanMaxChannelDwellTime INTEGER, wlanScanConfigStatus INTEGER } wlanScanFlags OBJECT-TYPE SYNTAX BITS { noSelection(1), activeScan(2), pickFirst(3), backgroundScan(4), once(5), noBroadcast(6), noAutoSequencing(7), flushCashe(8), chechCashe(9) } MAX-ACCESS read-write STATUS current DESCRIPTION "Desired flags for the channel scan." ::= { wlanScanConfigEntry 1 } wlanScanDuration OBJECT-TYPE SYNTAX INTEGER (1..2147483647) UNITS "milliseconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The desired duration of the scan. Setting the value of this object to the highest allowed value will initiate an infinite scan." ::= { wlanScanConfigEntry 2 } wlanScanMinChannelDwellTime OBJECT-TYPE SYNTAX INTEGER UNITS "milliseconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The minimum channel dwelltime for this scan." ::= { wlanScanConfigEntry 3 } wlanScanMaxChannelDwellTime OBJECT-TYPE SYNTAX INTEGER UNITS "milliseconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum channel dwelltime for this scan." ::= { wlanScanConfigEntry 4 } wlanScanConfigStatus OBJECT-TYPE SYNTAX INTEGER { unknown(0), notStarted(1), running(2), finished(3), cancel(4) } MAX-ACCESS read-write STATUS current DESCRIPTION "This object is used to initiate or cancel channel scanning on the cloned interface via SNMP. Setting its value to running(2) will initiate channel scanning on the cloned interface, while setting the value to cancel will cancel the current ongoing scan. All other values should be returned in GET operations only." ::= { wlanScanConfigEntry 5 } wlanScanResultsTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanScanResultsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains scan results for a virtual wireless interface." ::= { begemotWlanScanning 2 } wlanScanResultsEntry OBJECT-TYPE SYNTAX WlanScanResultsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Per virtual wireless interface channel scan results data." INDEX { wlanIfaceName, wlanScanResultID, wlanScanResultBssid } ::= { wlanScanResultsTable 1 } WlanScanResultsEntry ::= SEQUENCE { wlanScanResultID OCTET STRING, wlanScanResultBssid MacAddress, wlanScanResultChannel INTEGER, wlanScanResultRate INTEGER, wlanScanResultNoise INTEGER, wlanScanResultBeaconInterval INTEGER, wlanScanResultCapabilities BITS } wlanScanResultID OBJECT-TYPE SYNTAX OCTET STRING (SIZE(0..32)) MAX-ACCESS read-only STATUS current DESCRIPTION "The SSID/MESH ID for this scan result entry." ::= { wlanScanResultsEntry 1 } wlanScanResultBssid OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-only STATUS current DESCRIPTION "The BSSID for this scan result entry." ::= { wlanScanResultsEntry 2 } wlanScanResultChannel OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The operating channel for this scan result entry." ::= { wlanScanResultsEntry 3 } wlanScanResultRate OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The operating rate of this scan result entry." ::= { wlanScanResultsEntry 4 } wlanScanResultNoise OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The channel noise for this scan result entry." ::= { wlanScanResultsEntry 5 } wlanScanResultBeaconInterval OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The beacon interval reported for this scan result entry." ::= { wlanScanResultsEntry 6 } wlanScanResultCapabilities OBJECT-TYPE SYNTAX WlanPeerCapabilityFlags MAX-ACCESS read-only STATUS current DESCRIPTION "The capabilities advertised for this scan result entry." ::= { wlanScanResultsEntry 7 } wlanIfRoamParamsTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanIfRoamParamsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains the parameters that govern the roaming operation on a wireless interface." ::= { begemotWlanInterface 6 } wlanIfRoamParamsEntry OBJECT-TYPE SYNTAX WlanIfRoamParamsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry that contains the roaming parameters of a wireless interface." INDEX { wlanIfaceName, wlanIfRoamPhyMode } ::= { wlanIfRoamParamsTable 1 } WlanIfRoamParamsEntry ::= SEQUENCE { wlanIfRoamPhyMode INTEGER, wlanIfRoamRxSignalStrength INTEGER, wlanIfRoamTxRateThreshold INTEGER } wlanIfRoamPhyMode OBJECT-TYPE SYNTAX WlanIfPhyMode MAX-ACCESS not-accessible STATUS current DESCRIPTION "The PHY mode for this roaming parameters entry." ::= { wlanIfRoamParamsEntry 1 } wlanIfRoamRxSignalStrength OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The Receive Signal Strength for this roaming parameters entry." ::= { wlanIfRoamParamsEntry 2 } wlanIfRoamTxRateThreshold OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The transmit rate threshold value for this roaming parameters entry in Mb/s or MCS." ::= { wlanIfRoamParamsEntry 3 } wlanIfTxParamsTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanIfTxParamsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains the parameters that govern the transmit operation on a wireless interface." ::= { begemotWlanInterface 7 } wlanIfTxParamsEntry OBJECT-TYPE SYNTAX WlanIfTxParamsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "An entry that contains the transmit parameters of a wireless interface." INDEX { wlanIfaceName, wlanIfTxPhyMode } ::= { wlanIfTxParamsTable 1 } WlanIfTxParamsEntry ::= SEQUENCE { wlanIfTxPhyMode INTEGER, wlanIfTxUnicastRate INTEGER, wlanIfTxMcastRate INTEGER, wlanIfTxMgmtRate INTEGER, wlanIfTxMaxRetryCount INTEGER } wlanIfTxPhyMode OBJECT-TYPE SYNTAX WlanIfPhyMode MAX-ACCESS not-accessible STATUS current DESCRIPTION "The PHY mode for this entry." ::= { wlanIfTxParamsEntry 1 } wlanIfTxUnicastRate OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies a fixed rate for transmitting unicast frames in this phy mode." ::= { wlanIfTxParamsEntry 2 } wlanIfTxMcastRate OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies a fixed rate for transmitting broadcast and multicast frames in this phy mode." ::= { wlanIfTxParamsEntry 3 } wlanIfTxMgmtRate OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies a fixed rate for transmitting management and/or control frames in this phy mode." ::= { wlanIfTxParamsEntry 4 } wlanIfTxMaxRetryCount OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum number of tries to use when sending unicast frames in this phy mode." ::= { wlanIfTxParamsEntry 5 } -- ---------------------------------------------------------- -- -- The Statistics Database for Wireless interfaces -- ---------------------------------------------------------- -- wlanIfaceStatisticsTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanIfaceStatisticsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains summary statistics for each virtual wireless interface on the managed device." ::= { begemotWlanStatistics 1 } wlanIfaceStatisticsEntry OBJECT-TYPE SYNTAX WlanIfaceStatisticsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of statistics for each virtual wireless interface." AUGMENTS { wlanInterfaceEntry } ::= { wlanIfaceStatisticsTable 1 } WlanIfaceStatisticsEntry ::= SEQUENCE { wlanStatsRxBadVersion Counter32, wlanStatsRxTooShort Counter32, wlanStatsRxWrongBssid Counter32, wlanStatsRxDiscardedDups Counter32, wlanStatsRxWrongDir Counter32, wlanStatsRxDiscardMcastEcho Counter32, wlanStatsRxDiscardNoAssoc Counter32, wlanStatsRxWepNoPrivacy Counter32, wlanStatsRxWepUnencrypted Counter32, wlanStatsRxWepFailed Counter32, wlanStatsRxDecapsulationFailed Counter32, wlanStatsRxDiscardMgmt Counter32, wlanStatsRxControl Counter32, wlanStatsRxBeacon Counter32, wlanStatsRxRateSetTooBig Counter32, wlanStatsRxElemMissing Counter32, wlanStatsRxElemTooBig Counter32, wlanStatsRxElemTooSmall Counter32, wlanStatsRxElemUnknown Counter32, wlanStatsRxChannelMismatch Counter32, wlanStatsRxDropped Counter32, wlanStatsRxSsidMismatch Counter32, wlanStatsRxAuthNotSupported Counter32, wlanStatsRxAuthFailed Counter32, wlanStatsRxAuthCM Counter32, wlanStatsRxAssocWrongBssid Counter32, wlanStatsRxAssocNoAuth Counter32, wlanStatsRxAssocCapMismatch Counter32, wlanStatsRxAssocNoRateMatch Counter32, wlanStatsRxBadWpaIE Counter32, wlanStatsRxDeauthenticate Counter32, wlanStatsRxDisassociate Counter32, wlanStatsRxUnknownSubtype Counter32, wlanStatsRxFailedNoBuf Counter32, wlanStatsRxBadAuthRequest Counter32, wlanStatsRxUnAuthorized Counter32, wlanStatsRxBadKeyId Counter32, wlanStatsRxCCMPSeqViolation Counter32, wlanStatsRxCCMPBadFormat Counter32, wlanStatsRxCCMPFailedMIC Counter32, wlanStatsRxTKIPSeqViolation Counter32, wlanStatsRxTKIPBadFormat Counter32, wlanStatsRxTKIPFailedMIC Counter32, wlanStatsRxTKIPFailedICV Counter32, wlanStatsRxDiscardACL Counter32, wlanStatsTxFailedNoBuf Counter32, wlanStatsTxFailedNoNode Counter32, wlanStatsTxUnknownMgmt Counter32, wlanStatsTxBadCipher Counter32, wlanStatsTxNoDefKey Counter32, wlanStatsTxFragmented Counter32, wlanStatsTxFragmentsCreated Counter32, wlanStatsActiveScans Counter32, wlanStatsPassiveScans Counter32, wlanStatsTimeoutInactivity Counter32, wlanStatsCryptoNoMem Counter32, wlanStatsSwCryptoTKIP Counter32, wlanStatsSwCryptoTKIPEnMIC Counter32, wlanStatsSwCryptoTKIPDeMIC Counter32, wlanStatsCryptoTKIPCM Counter32, wlanStatsSwCryptoCCMP Counter32, wlanStatsSwCryptoWEP Counter32, wlanStatsCryptoCipherKeyRejected Counter32, wlanStatsCryptoNoKey Counter32, wlanStatsCryptoDeleteKeyFailed Counter32, wlanStatsCryptoUnknownCipher Counter32, wlanStatsCryptoAttachFailed Counter32, wlanStatsCryptoKeyFailed Counter32, wlanStatsCryptoEnMICFailed Counter32, wlanStatsIBSSCapMismatch Counter32, wlanStatsUnassocStaPSPoll Counter32, wlanStatsBadAidPSPoll Counter32, wlanStatsEmptyPSPoll Counter32, wlanStatsRxFFBadHdr Counter32, wlanStatsRxFFTooShort Counter32, wlanStatsRxFFSplitError Counter32, wlanStatsRxFFDecap Counter32, wlanStatsTxFFEncap Counter32, wlanStatsRxBadBintval Counter32, wlanStatsRxDemicFailed Counter32, wlanStatsRxDefragFailed Counter32, wlanStatsRxMgmt Counter32, wlanStatsRxActionMgmt Counter32, wlanStatsRxAMSDUTooShort Counter32, wlanStatsRxAMSDUSplitError Counter32, wlanStatsRxAMSDUDecap Counter32, wlanStatsTxAMSDUEncap Counter32, wlanStatsAMPDUBadBAR Counter32, wlanStatsAMPDUOowBar Counter32, wlanStatsAMPDUMovedBAR Counter32, wlanStatsAMPDURxBAR Counter32, wlanStatsAMPDURxOor Counter32, wlanStatsAMPDURxCopied Counter32, wlanStatsAMPDURxDropped Counter32, wlanStatsTxDiscardBadState Counter32, wlanStatsTxFailedNoAssoc Counter32, wlanStatsTxClassifyFailed Counter32, wlanStatsDwdsMcastDiscard Counter32, wlanStatsHTAssocRejectNoHT Counter32, wlanStatsHTAssocDowngrade Counter32, wlanStatsHTAssocRateMismatch Counter32, wlanStatsAMPDURxAge Counter32, wlanStatsAMPDUMoved Counter32, wlanStatsADDBADisabledReject Counter32, wlanStatsADDBANoRequest Counter32, wlanStatsADDBABadToken Counter32, wlanStatsADDBABadPolicy Counter32, wlanStatsAMPDUStopped Counter32, wlanStatsAMPDUStopFailed Counter32, wlanStatsAMPDURxReorder Counter32, wlanStatsScansBackground Counter32, wlanLastDeauthReason INTEGER, wlanLastDissasocReason INTEGER, wlanLastAuthFailReason INTEGER, wlanStatsBeaconMissedEvents Counter32, wlanStatsRxDiscardBadStates Counter32, wlanStatsFFFlushed Counter32, wlanStatsTxControlFrames Counter32, wlanStatsAMPDURexmt Counter32, wlanStatsAMPDURexmtFailed Counter32, wlanStatsReset INTEGER } wlanStatsRxBadVersion OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that had bad version." ::= { wlanIfaceStatisticsEntry 1 } wlanStatsRxTooShort OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that were too short." ::= { wlanIfaceStatisticsEntry 2 } wlanStatsRxWrongBssid OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface with wrong BSSID." ::= { wlanIfaceStatisticsEntry 3 } wlanStatsRxDiscardedDups OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of received discarded duplicate frames by this interface." ::= { wlanIfaceStatisticsEntry 4 } wlanStatsRxWrongDir OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of received frames by this interface that were dropped due to wrong direction." ::= { wlanIfaceStatisticsEntry 5 } wlanStatsRxDiscardMcastEcho OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of received multicast echo frames discarded by this interface." ::= { wlanIfaceStatisticsEntry 6 } wlanStatsRxDiscardNoAssoc OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that were dropped since no association existed with the sending station." ::= { wlanIfaceStatisticsEntry 7 } wlanStatsRxWepNoPrivacy OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that were dropped since they contained WEP information and WEP privacy was off." ::= { wlanIfaceStatisticsEntry 8 } wlanStatsRxWepUnencrypted OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that were dropped since they contained no WEP information and WEP privacy was on." ::= { wlanIfaceStatisticsEntry 9 } wlanStatsRxWepFailed OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that were dropped since processing of the WEP information contained in them failed." ::= { wlanIfaceStatisticsEntry 10 } wlanStatsRxDecapsulationFailed OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of received frames that were discarded by this interface due to decapsulation failure." ::= { wlanIfaceStatisticsEntry 11 } wlanStatsRxDiscardMgmt OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of received management frames discarded by this interface." ::= { wlanIfaceStatisticsEntry 12 } wlanStatsRxControl OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of control frames received by this interface." ::= { wlanIfaceStatisticsEntry 13 } wlanStatsRxBeacon OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of beacon frames received by this interface." ::= { wlanIfaceStatisticsEntry 14 } wlanStatsRxRateSetTooBig OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface with extended supported rate element." ::= { wlanIfaceStatisticsEntry 15 } wlanStatsRxElemMissing OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that were missing a required element." ::= { wlanIfaceStatisticsEntry 16 } wlanStatsRxElemTooBig OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that contained an information element whose size was too big." ::= { wlanIfaceStatisticsEntry 17 } wlanStatsRxElemTooSmall OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that contained an information element whose size was too small." ::= { wlanIfaceStatisticsEntry 18 } wlanStatsRxElemUnknown OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that contained an unknown information element." ::= { wlanIfaceStatisticsEntry 19 } wlanStatsRxChannelMismatch OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface, that were discarded since they were received on a channel different from the one indicated in the DS params element id." ::= { wlanIfaceStatisticsEntry 20 } wlanStatsRxDropped OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that were dropped due to unknown reason." ::= { wlanIfaceStatisticsEntry 21 } wlanStatsRxSsidMismatch OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that had a bad SSID." ::= { wlanIfaceStatisticsEntry 22 } wlanStatsRxAuthNotSupported OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that contained an unknown authentication algorithm." ::= { wlanIfaceStatisticsEntry 23 } wlanStatsRxAuthFailed OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface for which the authentication failed." ::= { wlanIfaceStatisticsEntry 24 } wlanStatsRxAuthCM OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface for which the authentication failed due to TKIP countermeasures enabled." ::= { wlanIfaceStatisticsEntry 25 } wlanStatsRxAssocWrongBssid OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface with association request that had a bad BSSID." ::= { wlanIfaceStatisticsEntry 26 } wlanStatsRxAssocNoAuth OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface with association request that came from unauthentication node." ::= { wlanIfaceStatisticsEntry 27 } wlanStatsRxAssocCapMismatch OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface with association request that had bad capabilities set." ::= { wlanIfaceStatisticsEntry 28 } wlanStatsRxAssocNoRateMatch OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface with association request that had unsupported rate set." ::= { wlanIfaceStatisticsEntry 29 } wlanStatsRxBadWpaIE OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface with association request that had no or invalid WPA information element." ::= { wlanIfaceStatisticsEntry 30 } wlanStatsRxDeauthenticate OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of deauthentication requests received by this interface." ::= { wlanIfaceStatisticsEntry 31 } wlanStatsRxDisassociate OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of deassociation requests received by this interface." ::= { wlanIfaceStatisticsEntry 32 } wlanStatsRxUnknownSubtype OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that had unknown subtype." ::= { wlanIfaceStatisticsEntry 33 } wlanStatsRxFailedNoBuf OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that were dropped due to lack of free buffers." ::= { wlanIfaceStatisticsEntry 34 } wlanStatsRxBadAuthRequest OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface for which authentication failed." ::= { wlanIfaceStatisticsEntry 35 } wlanStatsRxUnAuthorized OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of non-PAE frames received by this interface prior to authorization." ::= { wlanIfaceStatisticsEntry 36 } wlanStatsRxBadKeyId OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface with bad key." ::= { wlanIfaceStatisticsEntry 37 } wlanStatsRxCCMPSeqViolation OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that caused CCMP sequence violation." ::= { wlanIfaceStatisticsEntry 38 } wlanStatsRxCCMPBadFormat OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that had bad CCMP format." ::= { wlanIfaceStatisticsEntry 39 } wlanStatsRxCCMPFailedMIC OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames receivbed by this interface for which CCMP decryption failed due to MIC mismatch." ::= { wlanIfaceStatisticsEntry 40 } wlanStatsRxTKIPSeqViolation OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that caused TKIP sequence violation.." ::= { wlanIfaceStatisticsEntry 41 } wlanStatsRxTKIPBadFormat OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that were missing TKIP ExtIV." ::= { wlanIfaceStatisticsEntry 42 } wlanStatsRxTKIPFailedMIC OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface for which TKIP decryption failed due to MIC mismatch." ::= { wlanIfaceStatisticsEntry 43 } wlanStatsRxTKIPFailedICV OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface for which TKIP decryption failed due to ICV mismatch." ::= { wlanIfaceStatisticsEntry 44 } wlanStatsRxDiscardACL OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface that were disallowed by ACL." ::= { wlanIfaceStatisticsEntry 45 } wlanStatsTxFailedNoBuf OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames that were not transmitted by this interface due to lack of free buffers." ::= { wlanIfaceStatisticsEntry 46 } wlanStatsTxFailedNoNode OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames that were queued for transmit on this interface but were not sent since appropriate node for sending was not found." ::= { wlanIfaceStatisticsEntry 47 } wlanStatsTxUnknownMgmt OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of unknown management frames transmitted by this interface." ::= { wlanIfaceStatisticsEntry 48 } wlanStatsTxBadCipher OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames that were queued for transmit on this interface but were not send since the specified key was not setup." ::= { wlanIfaceStatisticsEntry 49 } wlanStatsTxNoDefKey OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames that were queued for transmit on this interface but were not send since an appropriate key was not found." ::= { wlanIfaceStatisticsEntry 50 } wlanStatsTxFragmented OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of fragmented frames transmitted by this interface." ::= { wlanIfaceStatisticsEntry 51 } wlanStatsTxFragmentsCreated OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of created fragments transmitted by this interface." ::= { wlanIfaceStatisticsEntry 52 } wlanStatsActiveScans OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of active scans performed by this interface." ::= { wlanIfaceStatisticsEntry 53 } wlanStatsPassiveScans OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of passive scans performed by this interface." ::= { wlanIfaceStatisticsEntry 54 } wlanStatsTimeoutInactivity OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times a station/node was dropped by this interface due to inactivity timeout." ::= { wlanIfaceStatisticsEntry 55 } wlanStatsCryptoNoMem OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number times attaching a crypto protocol to this interface failed due to lack of memory." ::= { wlanIfaceStatisticsEntry 56 } wlanStatsSwCryptoTKIP OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times TKIP encryption/decryption was handled in software for frames received/transmitted by this interface." ::= { wlanIfaceStatisticsEntry 57 } wlanStatsSwCryptoTKIPEnMIC OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times TKIP MIC was added in software to frames transmitted by this interface." ::= { wlanIfaceStatisticsEntry 58 } wlanStatsSwCryptoTKIPDeMIC OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times TKIP MIC was stripped in software from frames received by this interface." ::= { wlanIfaceStatisticsEntry 59 } wlanStatsCryptoTKIPCM OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames discarded by this interface due to TKIP counter measures." ::= { wlanIfaceStatisticsEntry 60 } wlanStatsSwCryptoCCMP OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times CCMP encryption/decryption was handled in software for frames received/transmitted by this interface." ::= { wlanIfaceStatisticsEntry 61 } wlanStatsSwCryptoWEP OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times WEP encryption/decryption was handled in software for frames received/transmitted by this interface." ::= { wlanIfaceStatisticsEntry 62 } wlanStatsCryptoCipherKeyRejected OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times a key was rejected for this interface." ::= { wlanIfaceStatisticsEntry 63 } wlanStatsCryptoNoKey OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times key setup for this interface failed." ::= { wlanIfaceStatisticsEntry 64 } wlanStatsCryptoDeleteKeyFailed OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times key deletion from driver for this interface failed." ::= { wlanIfaceStatisticsEntry 65 } wlanStatsCryptoUnknownCipher OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times key setup for this interface failed due to invalid cipher." ::= { wlanIfaceStatisticsEntry 66 } wlanStatsCryptoAttachFailed OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times attaching a cipher for this interface failed." ::= { wlanIfaceStatisticsEntry 67 } wlanStatsCryptoKeyFailed OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times setting a cipher in the driver for this interface failed." ::= { wlanIfaceStatisticsEntry 68 } wlanStatsCryptoEnMICFailed OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames that were discarded by by this interface due to failed enmic." ::= { wlanIfaceStatisticsEntry 69 } wlanStatsIBSSCapMismatch OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times a BSSID change failed for an interface operating in ad hoc mode due to capabilities mismatch." ::= { wlanIfaceStatisticsEntry 70 } wlanStatsUnassocStaPSPoll OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of ps-poll frames from unassociated station received by this interface." ::= { wlanIfaceStatisticsEntry 71 } wlanStatsBadAidPSPoll OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of ps-poll frames with incorrect aid received by this interface." ::= { wlanIfaceStatisticsEntry 72 } wlanStatsEmptyPSPoll OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of empty ps-poll frames received by this interface." ::= { wlanIfaceStatisticsEntry 73 } wlanStatsRxFFBadHdr OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of fast frames with bad header received by this interface." ::= { wlanIfaceStatisticsEntry 74 } wlanStatsRxFFTooShort OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of fast frames received by this interface, for which decapsulation failed." ::= { wlanIfaceStatisticsEntry 75 } wlanStatsRxFFSplitError OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of fast frames received by this interface, for which decapsulation failed during split." ::= { wlanIfaceStatisticsEntry 76 } wlanStatsRxFFDecap OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of fast frames received by this interface, that were successfully decapsulated." ::= { wlanIfaceStatisticsEntry 77 } wlanStatsTxFFEncap OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of encapsulated fast frames transmitted by this interface." ::= { wlanIfaceStatisticsEntry 78 } wlanStatsRxBadBintval OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames with bogus beacon interval received by this interface." ::= { wlanIfaceStatisticsEntry 79 } wlanStatsRxDemicFailed OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface for which stripping of the MIC failed." ::= { wlanIfaceStatisticsEntry 80 } wlanStatsRxDefragFailed OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received by this interface for which defragmentation failed." ::= { wlanIfaceStatisticsEntry 81 } wlanStatsRxMgmt OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of management frames received by this interface." ::= { wlanIfaceStatisticsEntry 82 } wlanStatsRxActionMgmt OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of action management frames received by this interface." ::= { wlanIfaceStatisticsEntry 83 } wlanStatsRxAMSDUTooShort OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of A-MSDU frames received by this interface for which decapsulaiton failed." ::= { wlanIfaceStatisticsEntry 84 } wlanStatsRxAMSDUSplitError OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of A-MSDU frames received by this interface for which split failed." ::= { wlanIfaceStatisticsEntry 85 } wlanStatsRxAMSDUDecap OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of A-MSDU frames received by this interface which were successfully decapsulaited." ::= { wlanIfaceStatisticsEntry 86 } wlanStatsTxAMSDUEncap OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of encapsulated A-MSDU frames transmitted by this interface." ::= { wlanIfaceStatisticsEntry 87 } wlanStatsAMPDUBadBAR OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of A-MPDU frames that were dropped by this interface source BAR frame processing was disabled." ::= { wlanIfaceStatisticsEntry 88 } wlanStatsAMPDUOowBar OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of A-MPDU BAR before ADDBA frames received by this interface." ::= { wlanIfaceStatisticsEntry 89 } wlanStatsAMPDUMovedBAR OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times a BAR moved window occurred." ::= { wlanIfaceStatisticsEntry 90 } wlanStatsAMPDURxBAR OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of A-MPDU BAR frames received by this interface." ::= { wlanIfaceStatisticsEntry 91 } wlanStatsAMPDURxOor OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of out-of-order A-MPDU frames by received this interface." ::= { wlanIfaceStatisticsEntry 92 } wlanStatsAMPDURxCopied OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of A-MPDU frames by copied down this interface." ::= { wlanIfaceStatisticsEntry 93 } wlanStatsAMPDURxDropped OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of A-MPDU frames by dropped this interface." ::= { wlanIfaceStatisticsEntry 94 } wlanStatsTxDiscardBadState OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames queued for transmit on this interface that were discarded due to interface state not ready for transmit." ::= { wlanIfaceStatisticsEntry 95 } wlanStatsTxFailedNoAssoc OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames queued for transmit on this interface that were discarded since the receiving station was not associated." ::= { wlanIfaceStatisticsEntry 96 } wlanStatsTxClassifyFailed OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames queued for transmit on this interface that were discarded since their priority was not determined." ::= { wlanIfaceStatisticsEntry 97 } wlanStatsDwdsMcastDiscard OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of multicast over DWDS frames discarded by this interface." ::= { wlanIfaceStatisticsEntry 98 } wlanStatsHTAssocRejectNoHT OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of management frames received from a non-HT stations that were rejected by this interface." ::= { wlanIfaceStatisticsEntry 99 } wlanStatsHTAssocDowngrade OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times HT was disallowed for an association on this interface due to WEP or TKIP requested." ::= { wlanIfaceStatisticsEntry 100 } wlanStatsHTAssocRateMismatch OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times rate mismatch occurred during HT rate set handling on this interface." ::= { wlanIfaceStatisticsEntry 101 } wlanStatsAMPDURxAge OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of A-MPDU frames sent by this interface due to aging out." ::= { wlanIfaceStatisticsEntry 102 } wlanStatsAMPDUMoved OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of time A-MPDU MSDU moved window occurred for this interface." ::= { wlanIfaceStatisticsEntry 103 } wlanStatsADDBADisabledReject OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of received ADDBA frames that were discarded by this interface since ADDBA was disabled." ::= { wlanIfaceStatisticsEntry 104 } wlanStatsADDBANoRequest OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of received ADDBA responses frames that were discarded by this interface due to no pending ADDBA." ::= { wlanIfaceStatisticsEntry 105 } wlanStatsADDBABadToken OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of received ADDBA response frames that were discarded by this interface since ADDBA response caused dialogtoken mismatch." ::= { wlanIfaceStatisticsEntry 106 } wlanStatsADDBABadPolicy OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of received ADDBA response frames that were discarded by this interface since ADDBA response caused policy mismatch." ::= { wlanIfaceStatisticsEntry 107 } wlanStatsAMPDUStopped OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times a A-MPDU stream stopped on this interface." ::= { wlanIfaceStatisticsEntry 108 } wlanStatsAMPDUStopFailed OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times a A-MPDU stream stop failed on this interface." ::= { wlanIfaceStatisticsEntry 109 } wlanStatsAMPDURxReorder OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of received reordered A-MPDU frames on this interface." ::= { wlanIfaceStatisticsEntry 110 } wlanStatsScansBackground OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of background scans started on this interface." ::= { wlanIfaceStatisticsEntry 111 } wlanLastDeauthReason OBJECT-TYPE SYNTAX WlanMgmtReasonCode MAX-ACCESS read-only STATUS current DESCRIPTION "The last received deauthenticate reason on this interface." ::= { wlanIfaceStatisticsEntry 112 } wlanLastDissasocReason OBJECT-TYPE SYNTAX WlanMgmtReasonCode MAX-ACCESS read-only STATUS current DESCRIPTION "The last received disassociate reason on this interface." ::= { wlanIfaceStatisticsEntry 113 } wlanLastAuthFailReason OBJECT-TYPE SYNTAX WlanMgmtReasonCode MAX-ACCESS read-only STATUS current DESCRIPTION "The last received authentication failed reason on this interface." ::= { wlanIfaceStatisticsEntry 114 } wlanStatsBeaconMissedEvents OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of beacon miss notification events on this interface." ::= { wlanIfaceStatisticsEntry 115 } wlanStatsRxDiscardBadStates OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames received on this interface that were discarded due to interface state not ready for receive." ::= { wlanIfaceStatisticsEntry 116 } wlanStatsFFFlushed OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of fast frames flushed from the stage queue on this interface." ::= { wlanIfaceStatisticsEntry 117 } wlanStatsTxControlFrames OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of control frames transmitted by this interface." ::= { wlanIfaceStatisticsEntry 118 } wlanStatsAMPDURexmt OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of A-MPDU frames successfully retransmitted by this interface." ::= { wlanIfaceStatisticsEntry 119 } wlanStatsAMPDURexmtFailed OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of A-MPDU frames for which retransmission failed on this interface." ::= { wlanIfaceStatisticsEntry 120 } wlanStatsReset OBJECT-TYPE SYNTAX INTEGER { no-op(1), clear(2) } MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object is used to reset the statistics on this interface." ::= { wlanIfaceStatisticsEntry 121 } -- ---------------------------------------------------------- -- -- The WEP Configuration Database for Wireless interfaces -- ---------------------------------------------------------- -- wlanWepInterfaceTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanWepInterfaceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains WEP configuration for the wireless interfaces on the managed system." ::= { begemotWlanWep 1 } wlanWepInterfaceEntry OBJECT-TYPE SYNTAX WlanWepInterfaceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "WEP Configuration for wireless interface." INDEX { wlanIfaceName} ::= { wlanWepInterfaceTable 1 } WlanWepInterfaceEntry ::= SEQUENCE { wlanWepMode INTEGER, wlanWepDefTxKey INTEGER } wlanWepMode OBJECT-TYPE SYNTAX INTEGER { off(0), on(1), mixed(2) } MAX-ACCESS read-write STATUS current DESCRIPTION "The WEP mode set on the interface." DEFVAL { off } ::= { wlanWepInterfaceEntry 1 } wlanWepDefTxKey OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-write STATUS current DESCRIPTION "The index of the default WEP key for the interface." ::= { wlanWepInterfaceEntry 2 } wlanWepKeyTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanWepKeyEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains the configured WEP keys for a virtual wireless interface." ::= { begemotWlanWep 2 } wlanWepKeyEntry OBJECT-TYPE SYNTAX WlanWepKeyEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A configured WEP Key entry." INDEX { wlanIfaceName, wlanWepKeyID } ::= { wlanWepKeyTable 1 } WlanWepKeyEntry ::= SEQUENCE { wlanWepKeyID INTEGER, wlanWepKeyLength INTEGER, wlanWepKeySet OCTET STRING, wlanWepKeyHash OCTET STRING, wlanWepKeyStatus RowStatus } wlanWepKeyID OBJECT-TYPE SYNTAX INTEGER (1..4) MAX-ACCESS read-write STATUS current DESCRIPTION "The WEP Key ID." ::= { wlanWepKeyEntry 1 } wlanWepKeyLength OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The WEP Key length." ::= { wlanWepKeyEntry 2 } wlanWepKeySet OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-write STATUS current DESCRIPTION "The WEP Key String to configure for this key. When GET is attempted for this column, an empty Octet String is returned." ::= { wlanWepKeyEntry 3 } wlanWepKeyHash OBJECT-TYPE SYNTAX OCTET STRING MAX-ACCESS read-only STATUS current DESCRIPTION "The SHA256 hash produced of the WEP Key String." ::= { wlanWepKeyEntry 4 } wlanWepKeyStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-write STATUS current DESCRIPTION "This object is used for creating/deleting WEP keys." ::= { wlanWepKeyEntry 5 } -- ---------------------------------------------------------- -- -- The MAC Access Control Database for Wireless interfaces -- ---------------------------------------------------------- -- wlanMACAccessControlTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanMACAccessControlEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains Access Control configuration for wireless interfaces operating as an access point." ::= { begemotWlanMACAccessControl 1 } wlanMACAccessControlEntry OBJECT-TYPE SYNTAX WlanMACAccessControlEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The MAC Access Control configuration for a wireless interface operating as an access point." INDEX { wlanIfaceName} ::= { wlanMACAccessControlTable 1 } WlanMACAccessControlEntry ::= SEQUENCE { wlanMACAccessControlPolicy INTEGER, wlanMACAccessControlNacl Counter32, wlanMACAccessControlFlush INTEGER } wlanMACAccessControlPolicy OBJECT-TYPE SYNTAX INTEGER { open(0), allow(1), deny(2), radius(7) } MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies the MAC Access Control policy for this Host AP interface." DEFVAL { open } ::= { wlanMACAccessControlEntry 1 } wlanMACAccessControlNacl OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of active MAC Access Control Entries in the Database for this Host AP interface." ::= { wlanMACAccessControlEntry 2 } wlanMACAccessControlFlush OBJECT-TYPE SYNTAX INTEGER { no-op(0), flush(1) } MAX-ACCESS read-write STATUS current DESCRIPTION "This object is used to flush all entries from the MAC Access Control Database for the specified virtual wireless interface." ::= { wlanMACAccessControlEntry 3 } wlanMACAccessControlMACTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanMACAccessControlMACEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains Access Control MAC for virtual wireless interfaces operating in Host AP mode." ::= { begemotWlanMACAccessControl 2 } wlanMACAccessControlMACEntry OBJECT-TYPE SYNTAX WlanMACAccessControlMACEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "The MAC Access Control configuration database with MAC addresses for a virtual wireless interface." INDEX { wlanIfaceName, wlanMACAccessControlMAC } ::= { wlanMACAccessControlMACTable 1 } WlanMACAccessControlMACEntry ::= SEQUENCE { wlanMACAccessControlMAC MacAddress, wlanMACAccessControlMACStatus RowStatus } wlanMACAccessControlMAC OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-write STATUS current DESCRIPTION "The value of this object specifies the station's MAC to which the Access Control policy will be applied." ::= { wlanMACAccessControlMACEntry 1 } wlanMACAccessControlMACStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-write STATUS current DESCRIPTION "The object is used to add or delete MAC entries from the Access Control Database for this interface operating in Host AP mode. To add an entry the value of this object should be set to createAndGo, a value of destroy will remove an existing entry. A GET on this object will always return value active." ::= { wlanMACAccessControlMACEntry 2 } -- ---------------------------------------------------------- -- -- The Mesh Routing Database for interfaces operating in mesh mode -- ---------------------------------------------------------- -- wlanMeshRoutingConfig OBJECT IDENTIFIER ::= { begemotWlanMeshRouting 1 } wlanMeshInterface OBJECT IDENTIFIER ::= { begemotWlanMeshRouting 2 } wlanMeshRoute OBJECT IDENTIFIER ::= { begemotWlanMeshRouting 3 } wlanMeshStatistics OBJECT IDENTIFIER ::= { begemotWlanMeshRouting 4 } wlanMeshRouteProtocols OBJECT IDENTIFIER ::= { begemotWlanMeshRouting 5 } wlanMeshMaxRetries OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-write STATUS current DESCRIPTION "Maximum retries during peer link establishment for wireless mesh routing operation." DEFVAL { 2 } ::= { wlanMeshRoutingConfig 1 } wlanMeshConfirmTimeout OBJECT-TYPE SYNTAX INTEGER UNITS "milliseconds" MAX-ACCESS read-write STATUS current DESCRIPTION "Confirm state timeout for wireless mesh routing operation." DEFVAL { 40 } ::= { wlanMeshRoutingConfig 2 } wlanMeshHoldingTimeout OBJECT-TYPE SYNTAX INTEGER UNITS "milliseconds" MAX-ACCESS read-write STATUS current DESCRIPTION "Holding state timeout for wireless mesh routing operation." DEFVAL { 40 } ::= { wlanMeshRoutingConfig 3 } wlanMeshRetryTimeout OBJECT-TYPE SYNTAX INTEGER UNITS "milliseconds" MAX-ACCESS read-write STATUS current DESCRIPTION "Retry timeout for wireless mesh routing operation." DEFVAL { 40 } ::= { wlanMeshRoutingConfig 4 } wlanMeshInterfaceTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanMeshInterfaceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains information for wireless interfaces operating as wireless mesh points." ::= { wlanMeshInterface 1 } wlanMeshInterfaceEntry OBJECT-TYPE SYNTAX WlanMeshInterfaceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Wireless Mesh Routing information for an interface operating as mesh point." INDEX { wlanIfaceName } ::= { wlanMeshInterfaceTable 1 } WlanMeshInterfaceEntry ::= SEQUENCE { wlanMeshId OCTET STRING, wlanMeshTTL INTEGER, wlanMeshPeeringEnabled TruthValue, wlanMeshForwardingEnabled TruthValue, wlanMeshMetric INTEGER, wlanMeshPath INTEGER, wlanMeshRoutesFlush INTEGER } wlanMeshId OBJECT-TYPE SYNTAX OCTET STRING (SIZE(1..32)) MAX-ACCESS read-write STATUS current DESCRIPTION "The desired Mesh Identifier for the interface." ::= { wlanMeshInterfaceEntry 1 } wlanMeshTTL OBJECT-TYPE SYNTAX INTEGER UNITS "hops" MAX-ACCESS read-write STATUS current DESCRIPTION "The number of hops a packet may be forwarded before it is discarded." DEFVAL { 31 } ::= { wlanMeshInterfaceEntry 2 } wlanMeshPeeringEnabled OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "Enable or disable peering with neighbor mesh stations for this interface." DEFVAL { true } ::= { wlanMeshInterfaceEntry 3 } wlanMeshForwardingEnabled OBJECT-TYPE SYNTAX TruthValue MAX-ACCESS read-write STATUS current DESCRIPTION "Enable or disable forwarding packets by this interface." DEFVAL { true } ::= { wlanMeshInterfaceEntry 4 } wlanMeshMetric OBJECT-TYPE SYNTAX INTEGER { unknown(0), airtime(1) } MAX-ACCESS read-write STATUS current DESCRIPTION "The link metric protocol used by the interface." DEFVAL { airtime } ::= { wlanMeshInterfaceEntry 5 } wlanMeshPath OBJECT-TYPE SYNTAX INTEGER { unknown(0), hwmp(1) } MAX-ACCESS read-write STATUS current DESCRIPTION "The path selection protocol used by the interface." DEFVAL { hwmp } ::= { wlanMeshInterfaceEntry 6 } wlanMeshRoutesFlush OBJECT-TYPE SYNTAX INTEGER { no-op(0), flush(1) } MAX-ACCESS read-write STATUS current DESCRIPTION "This object is used to flush all mesh route entries from the mesh routing table for the specified interface." ::= { wlanMeshInterfaceEntry 7 } wlanMeshNeighborTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanMeshNeighborEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains information for the neighbors of wireless interfaces operating in mesh mode." ::= { wlanMeshInterface 2 } wlanMeshNeighborEntry OBJECT-TYPE SYNTAX WlanMeshNeighborEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Information for all neighbors of a wireless interface operating as a mesh point." INDEX { wlanIfaceName, wlanMeshNeighborAddress } ::= { wlanMeshNeighborTable 1 } WlanMeshNeighborEntry ::= SEQUENCE { wlanMeshNeighborAddress MacAddress, wlanMeshNeighborFrequency INTEGER, wlanMeshNeighborLocalId INTEGER, wlanMeshNeighborPeerId INTEGER, wlanMeshNeighborPeerState INTEGER, wlanMeshNeighborCurrentTXRate INTEGER, wlanMeshNeighborRxSignalStrength INTEGER, wlanMeshNeighborIdleTimer INTEGER, wlanMeshNeighborTxSequenceNo INTEGER, wlanMeshNeighborRxSequenceNo INTEGER } wlanMeshNeighborAddress OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-only STATUS current DESCRIPTION "The Ethernet address of this neighbor." ::= { wlanMeshNeighborEntry 1 } wlanMeshNeighborFrequency OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The operating frequency for the link with this neighbor." ::= { wlanMeshNeighborEntry 2 } wlanMeshNeighborLocalId OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The local mesh id for this neighbor." ::= { wlanMeshNeighborEntry 3 } wlanMeshNeighborPeerId OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The mesh peer id of this neighbor." ::= { wlanMeshNeighborEntry 4 } wlanMeshNeighborPeerState OBJECT-TYPE SYNTAX INTEGER { idle(0), openTx(1), openRx(2), confirmRx(3), established(4), closing(5) } MAX-ACCESS read-only STATUS current DESCRIPTION "The current link state for this neighbor." ::= { wlanMeshNeighborEntry 5 } wlanMeshNeighborCurrentTXRate OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The current transmit rate for this neighbor." ::= { wlanMeshNeighborEntry 6 } wlanMeshNeighborRxSignalStrength OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The average receive signal strength for this neighbor." ::= { wlanMeshNeighborEntry 7 } wlanMeshNeighborIdleTimer OBJECT-TYPE SYNTAX INTEGER UNITS "seconds" MAX-ACCESS read-only STATUS current DESCRIPTION "The value of this neighbor's inactivity timer." ::= { wlanMeshNeighborEntry 8 } wlanMeshNeighborTxSequenceNo OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The last sequence number transmitted to this neighbor." ::= { wlanMeshNeighborEntry 9 } wlanMeshNeighborRxSequenceNo OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The last sequence number received from this neighbor." ::= { wlanMeshNeighborEntry 10 } wlanMeshRouteTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanMeshRouteEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains the mesh routing table for interfaces operating as mesh points, used for forwarding packets on a mesh network." ::= { wlanMeshRoute 1 } wlanMeshRouteEntry OBJECT-TYPE SYNTAX WlanMeshRouteEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Wireless Mesh Routing Table entries for virtual wireless interfaces." INDEX { wlanIfaceName, wlanMeshRouteDestination } ::= { wlanMeshRouteTable 1 } WlanMeshRouteEntry ::= SEQUENCE { wlanMeshRouteDestination MacAddress, wlanMeshRouteNextHop MacAddress, wlanMeshRouteHops INTEGER, wlanMeshRouteMetric Unsigned32, wlanMeshRouteLifeTime Unsigned32, wlanMeshRouteLastMseq Unsigned32, wlanMeshRouteFlags BITS, wlanMeshRouteStatus RowStatus } wlanMeshRouteDestination OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-create STATUS current DESCRIPTION "The mesh route entry's destination address." ::= { wlanMeshRouteEntry 1 } wlanMeshRouteNextHop OBJECT-TYPE SYNTAX MacAddress MAX-ACCESS read-only STATUS current DESCRIPTION "The mesh route entry's next hop address." ::= { wlanMeshRouteEntry 2 } wlanMeshRouteHops OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-only STATUS current DESCRIPTION "The number of hops for this mesh route entry." ::= { wlanMeshRouteEntry 3 } wlanMeshRouteMetric OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The metric of this mesh route entry." ::= { wlanMeshRouteEntry 4 } wlanMeshRouteLifeTime OBJECT-TYPE SYNTAX Unsigned32 UNITS "seconds" MAX-ACCESS read-only STATUS current DESCRIPTION "The life time of this mesh route entry." ::= { wlanMeshRouteEntry 5 } wlanMeshRouteLastMseq OBJECT-TYPE SYNTAX Unsigned32 MAX-ACCESS read-only STATUS current DESCRIPTION "The last sequence number seen from this destination." ::= { wlanMeshRouteEntry 6 } wlanMeshRouteFlags OBJECT-TYPE SYNTAX BITS { valid(1), proxy(2) } MAX-ACCESS read-only STATUS current DESCRIPTION "The Mesh Route entry's flags." ::= { wlanMeshRouteEntry 7 } wlanMeshRouteStatus OBJECT-TYPE SYNTAX RowStatus MAX-ACCESS read-write STATUS current DESCRIPTION "The object is used to add or delete entries from the mesh routing table for the virtual wireless interface." ::= { wlanMeshRouteEntry 8 } wlanMeshStatsTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanMeshStatsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains summary statistics for each virtual wireless interface operating as mesh point." ::= { wlanMeshStatistics 1 } wlanMeshStatsEntry OBJECT-TYPE SYNTAX WlanMeshStatsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of statistics for each virtual wireless interface operating as mesh point." INDEX { wlanIfaceName } ::= { wlanMeshStatsTable 1 } WlanMeshStatsEntry ::= SEQUENCE { wlanMeshDroppedBadSta Counter32, wlanMeshDroppedNoLink Counter32, wlanMeshNoFwdTtl Counter32, wlanMeshNoFwdBuf Counter32, wlanMeshNoFwdTooShort Counter32, wlanMeshNoFwdDisabled Counter32, wlanMeshNoFwdPathUnknown Counter32, wlanMeshDroppedBadAE Counter32, wlanMeshRouteAddFailed Counter32, wlanMeshDroppedNoProxy Counter32, wlanMeshDroppedMisaligned Counter32 } wlanMeshDroppedBadSta OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames dropped by this interface since they were received from a non-mesh station." ::= { wlanMeshStatsEntry 1 } wlanMeshDroppedNoLink OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames dropped by this interface since no link had been established." ::= { wlanMeshStatsEntry 2 } wlanMeshNoFwdTtl OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames that were not forwarded by this interface because of a zero TTL." ::= { wlanMeshStatsEntry 3 } wlanMeshNoFwdBuf OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames that were not forwarded by this interface due to lack of free buffers." ::= { wlanMeshStatsEntry 4 } wlanMeshNoFwdTooShort OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames that were not forwarded by this interface due to missing headers." ::= { wlanMeshStatsEntry 5 } wlanMeshNoFwdDisabled OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames that were not forwarded by this interface since forwarding was disabled." ::= { wlanMeshStatsEntry 6 } wlanMeshNoFwdPathUnknown OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames that were not forwarded by this interface since the path was unknown." ::= { wlanMeshStatsEntry 7 } wlanMeshDroppedBadAE OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames that were dropped by this interface since the AE was invalid." ::= { wlanMeshStatsEntry 8 } wlanMeshRouteAddFailed OBJECT-TYPE SYNTAX Counter32 MAX-ACCESS read-only STATUS current DESCRIPTION "The number of times an addition of a route to the mesh routing table for this interface failed." ::= { wlanMeshStatsEntry 9 } wlanMeshDroppedNoProxy OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames that were dropped by this interface since proxying was not enabled on the interface." ::= { wlanMeshStatsEntry 10 } wlanMeshDroppedMisaligned OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of frames that were dropped by this interface due to bad alignment." ::= { wlanMeshStatsEntry 11 } -- ---------------------------------------------------------- -- -- Subtrees containing data for each supported mesh routing protocol. -- ---------------------------------------------------------- -- wlanMeshProtoHWMP OBJECT IDENTIFIER ::= { wlanMeshRouteProtocols 1 } -- ---------------------------------------------------------- -- -- Hybrid Wireless Mesh Protocol database. -- ---------------------------------------------------------- -- wlanMeshHWMPConfig OBJECT IDENTIFIER ::= { wlanMeshProtoHWMP 1 } wlanMeshHWMPInterface OBJECT IDENTIFIER ::= { wlanMeshProtoHWMP 2 } wlanMeshHWMPStatistics OBJECT IDENTIFIER ::= { wlanMeshProtoHWMP 3 } wlanHWMPRouteInactiveTimeout OBJECT-TYPE SYNTAX INTEGER UNITS "milliseconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The HWMP Route inactivity timeout." DEFVAL { 5000 } ::= { wlanMeshHWMPConfig 1 } wlanHWMPRootAnnounceInterval OBJECT-TYPE SYNTAX INTEGER UNITS "milliseconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The HWMP Root Announcement interval." DEFVAL { 1000 } ::= { wlanMeshHWMPConfig 2 } wlanHWMPRootInterval OBJECT-TYPE SYNTAX INTEGER UNITS "milliseconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The HWMP Root interval." DEFVAL { 2000 } ::= { wlanMeshHWMPConfig 3 } wlanHWMPRootTimeout OBJECT-TYPE SYNTAX INTEGER UNITS "milliseconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The root PREQ timeout." DEFVAL { 5000 } ::= { wlanMeshHWMPConfig 4 } wlanHWMPPathLifetime OBJECT-TYPE SYNTAX INTEGER UNITS "milliseconds" MAX-ACCESS read-write STATUS current DESCRIPTION "The HWMP path entry lifetime." DEFVAL { 500 } ::= { wlanMeshHWMPConfig 5 } wlanHWMPReplyForwardBit OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-write STATUS current DESCRIPTION "A non-zero value for this object specifies that RF bit shall be set on generated PREQs." DEFVAL { 1 } ::= { wlanMeshHWMPConfig 6 } wlanHWMPTargetOnlyBit OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-write STATUS current DESCRIPTION "A non-zero value for this object specifies that TO bit shall be set on generated PREQs." DEFVAL { 0 } ::= { wlanMeshHWMPConfig 7 } wlanHWMPInterfaceTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanHWMPInterfaceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains information for wireless interfaces operating in mesh mode." ::= { wlanMeshHWMPInterface 1 } wlanHWMPInterfaceEntry OBJECT-TYPE SYNTAX WlanHWMPInterfaceEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "Wireless Mesh Routing HWMP information for a wireless interface." INDEX { wlanIfaceName } ::= { wlanHWMPInterfaceTable 1 } WlanHWMPInterfaceEntry ::= SEQUENCE { wlanHWMPRootMode INTEGER, wlanHWMPMaxHops INTEGER } wlanHWMPRootMode OBJECT-TYPE SYNTAX INTEGER { disabled(1), normal(2), proactive(3), rann(4) } MAX-ACCESS read-write STATUS current DESCRIPTION "This object is used to configure whether the interface will operate as root node and specify root node mode." DEFVAL { disabled } ::= { wlanHWMPInterfaceEntry 1 } wlanHWMPMaxHops OBJECT-TYPE SYNTAX INTEGER MAX-ACCESS read-write STATUS current DESCRIPTION "The maximum number of hops allowed on an HMWP path for this interface." DEFVAL { 31 } ::= { wlanHWMPInterfaceEntry 2 } wlanMeshHWMPStatsTable OBJECT-TYPE SYNTAX SEQUENCE OF WlanMeshHWMPStatsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A table that contains summary statistics for HWMP operation on an interface operating as mesh point." ::= { wlanMeshHWMPStatistics 1 } wlanMeshHWMPStatsEntry OBJECT-TYPE SYNTAX WlanMeshHWMPStatsEntry MAX-ACCESS not-accessible STATUS current DESCRIPTION "A list of HWMP statistics for each wlan interface operating as HWMP mesh point." INDEX { wlanIfaceName } ::= { wlanMeshHWMPStatsTable 1 } WlanMeshHWMPStatsEntry ::= SEQUENCE { wlanMeshHWMPWrongSeqNo Counter32, wlanMeshHWMPTxRootPREQ Counter32, wlanMeshHWMPTxRootRANN Counter32, wlanMeshHWMPProxy Counter32 } wlanMeshHWMPWrongSeqNo OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of HWMP frames with wrong sequence number received by this interface." ::= { wlanMeshHWMPStatsEntry 1 } wlanMeshHWMPTxRootPREQ OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of HWMP Root PREQ frames sent by this interface." ::= { wlanMeshHWMPStatsEntry 2 } wlanMeshHWMPTxRootRANN OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of HWMP Root RANN frames sent by this interface." ::= { wlanMeshHWMPStatsEntry 3 } wlanMeshHWMPProxy OBJECT-TYPE SYNTAX Counter32 UNITS "frames" MAX-ACCESS read-only STATUS current DESCRIPTION "The number of HWMP PREP frames discarded by this interface due to the HWMP route being marked as proxy." ::= { wlanMeshHWMPStatsEntry 4 } END