Files
luci/jsapi/LuCI.network.Protocol.html
2026-03-04 04:17:11 +00:00

3 lines
68 KiB
HTML

<!DOCTYPE html><html lang="en" style="font-size:16px"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width,initial-scale=1"><link rel="icon" href="favicon.png"><link type="text/css" rel="stylesheet" href="extra.css"><title>Class: Protocol</title><!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]--><script src="scripts/third-party/hljs.js" defer="defer"></script><script src="scripts/third-party/hljs-line-num.js" defer="defer"></script><script src="scripts/third-party/popper.js" defer="defer"></script><script src="scripts/third-party/tippy.js" defer="defer"></script><script src="scripts/third-party/tocbot.min.js"></script><script>var baseURL="/",locationPathname="";baseURL=(locationPathname=document.location.pathname).substr(0,locationPathname.lastIndexOf("/")+1)</script><link rel="stylesheet" href="styles/clean-jsdoc-theme.min.css"><svg aria-hidden="true" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" style="display:none"><defs><symbol id="copy-icon" viewbox="0 0 488.3 488.3"><g><path d="M314.25,85.4h-227c-21.3,0-38.6,17.3-38.6,38.6v325.7c0,21.3,17.3,38.6,38.6,38.6h227c21.3,0,38.6-17.3,38.6-38.6V124 C352.75,102.7,335.45,85.4,314.25,85.4z M325.75,449.6c0,6.4-5.2,11.6-11.6,11.6h-227c-6.4,0-11.6-5.2-11.6-11.6V124 c0-6.4,5.2-11.6,11.6-11.6h227c6.4,0,11.6,5.2,11.6,11.6V449.6z"/><path d="M401.05,0h-227c-21.3,0-38.6,17.3-38.6,38.6c0,7.5,6,13.5,13.5,13.5s13.5-6,13.5-13.5c0-6.4,5.2-11.6,11.6-11.6h227 c6.4,0,11.6,5.2,11.6,11.6v325.7c0,6.4-5.2,11.6-11.6,11.6c-7.5,0-13.5,6-13.5,13.5s6,13.5,13.5,13.5c21.3,0,38.6-17.3,38.6-38.6 V38.6C439.65,17.3,422.35,0,401.05,0z"/></g></symbol><symbol id="search-icon" viewBox="0 0 512 512"><g><g><path d="M225.474,0C101.151,0,0,101.151,0,225.474c0,124.33,101.151,225.474,225.474,225.474 c124.33,0,225.474-101.144,225.474-225.474C450.948,101.151,349.804,0,225.474,0z M225.474,409.323 c-101.373,0-183.848-82.475-183.848-183.848S124.101,41.626,225.474,41.626s183.848,82.475,183.848,183.848 S326.847,409.323,225.474,409.323z"/></g></g><g><g><path d="M505.902,476.472L386.574,357.144c-8.131-8.131-21.299-8.131-29.43,0c-8.131,8.124-8.131,21.306,0,29.43l119.328,119.328 c4.065,4.065,9.387,6.098,14.715,6.098c5.321,0,10.649-2.033,14.715-6.098C514.033,497.778,514.033,484.596,505.902,476.472z"/></g></g></symbol><symbol id="font-size-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11.246 15H4.754l-2 5H.6L7 4h2l6.4 16h-2.154l-2-5zm-.8-2L8 6.885 5.554 13h4.892zM21 12.535V12h2v8h-2v-.535a4 4 0 1 1 0-6.93zM19 18a2 2 0 1 0 0-4 2 2 0 0 0 0 4z"/></symbol><symbol id="add-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M11 11V5h2v6h6v2h-6v6h-2v-6H5v-2z"/></symbol><symbol id="minus-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M5 11h14v2H5z"/></symbol><symbol id="dark-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M10 7a7 7 0 0 0 12 4.9v.1c0 5.523-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2h.1A6.979 6.979 0 0 0 10 7zm-6 5a8 8 0 0 0 15.062 3.762A9 9 0 0 1 8.238 4.938 7.999 7.999 0 0 0 4 12z"/></symbol><symbol id="light-theme-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 18a6 6 0 1 1 0-12 6 6 0 0 1 0 12zm0-2a4 4 0 1 0 0-8 4 4 0 0 0 0 8zM11 1h2v3h-2V1zm0 19h2v3h-2v-3zM3.515 4.929l1.414-1.414L7.05 5.636 5.636 7.05 3.515 4.93zM16.95 18.364l1.414-1.414 2.121 2.121-1.414 1.414-2.121-2.121zm2.121-14.85l1.414 1.415-2.121 2.121-1.414-1.414 2.121-2.121zM5.636 16.95l1.414 1.414-2.121 2.121-1.414-1.414 2.121-2.121zM23 11v2h-3v-2h3zM4 11v2H1v-2h3z"/></symbol><symbol id="reset-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M18.537 19.567A9.961 9.961 0 0 1 12 22C6.477 22 2 17.523 2 12S6.477 2 12 2s10 4.477 10 10c0 2.136-.67 4.116-1.81 5.74L17 12h3a8 8 0 1 0-2.46 5.772l.997 1.795z"/></symbol><symbol id="down-icon" viewBox="0 0 16 16"><path fill-rule="evenodd" clip-rule="evenodd" d="M12.7803 6.21967C13.0732 6.51256 13.0732 6.98744 12.7803 7.28033L8.53033 11.5303C8.23744 11.8232 7.76256 11.8232 7.46967 11.5303L3.21967 7.28033C2.92678 6.98744 2.92678 6.51256 3.21967 6.21967C3.51256 5.92678 3.98744 5.92678 4.28033 6.21967L8 9.93934L11.7197 6.21967C12.0126 5.92678 12.4874 5.92678 12.7803 6.21967Z"></path></symbol><symbol id="codepen-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M16.5 13.202L13 15.535v3.596L19.197 15 16.5 13.202zM14.697 12L12 10.202 9.303 12 12 13.798 14.697 12zM20 10.869L18.303 12 20 13.131V10.87zM19.197 9L13 4.869v3.596l3.5 2.333L19.197 9zM7.5 10.798L11 8.465V4.869L4.803 9 7.5 10.798zM4.803 15L11 19.131v-3.596l-3.5-2.333L4.803 15zM4 13.131L5.697 12 4 10.869v2.262zM2 9a1 1 0 0 1 .445-.832l9-6a1 1 0 0 1 1.11 0l9 6A1 1 0 0 1 22 9v6a1 1 0 0 1-.445.832l-9 6a1 1 0 0 1-1.11 0l-9-6A1 1 0 0 1 2 15V9z"/></symbol><symbol id="close-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M12 10.586l4.95-4.95 1.414 1.414-4.95 4.95 4.95 4.95-1.414 1.414-4.95-4.95-4.95 4.95-1.414-1.414 4.95-4.95-4.95-4.95L7.05 5.636z"/></symbol><symbol id="menu-icon" viewBox="0 0 24 24"><path fill="none" d="M0 0h24v24H0z"/><path d="M3 4h18v2H3V4zm0 7h18v2H3v-2zm0 7h18v2H3v-2z"/></symbol></defs></svg></head><body data-theme="fallback-dark"><div class="sidebar-container"><div class="sidebar" id="sidebar"><a href="/" class="sidebar-title sidebar-title-anchor">LuCI Documentation</a><div class="sidebar-items-container"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-tutorials"><div>Tutorials</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="tutorial-JsonRpcHowTo.html">Using JSON RPC daemon</a></div><div class="sidebar-section-children"><a href="tutorial-Modules.html">Modules</a></div><div class="sidebar-section-children"><a href="tutorial-ThemesHowTo.html">Making Themes</a></div><div class="sidebar-section-children"><a href="tutorial-i18n.html">Internationalisation - i18n</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-modules"><div>Modules</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="LuCI.module_cbi.html">cbi</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-classes"><div>Classes</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="LuCI.html">LuCI</a></div><div class="sidebar-section-children"><a href="LuCI.baseclass.html">baseclass</a></div><div class="sidebar-section-children"><a href="LuCI.dom.html">dom</a></div><div class="sidebar-section-children"><a href="LuCI.form.html">form</a></div><div class="sidebar-section-children"><a href="LuCI.form.AbstractElement.html">AbstractElement</a></div><div class="sidebar-section-children"><a href="LuCI.form.AbstractSection.html">AbstractSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.AbstractValue.html">AbstractValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.Button.html">Button</a></div><div class="sidebar-section-children"><a href="LuCI.form.DirectoryPicker.html">DirectoryPicker</a></div><div class="sidebar-section-children"><a href="LuCI.form.DummyValue.html">DummyValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.DynamicList.html">DynamicList</a></div><div class="sidebar-section-children"><a href="LuCI.form.FileUpload.html">FileUpload</a></div><div class="sidebar-section-children"><a href="LuCI.form.Flag.html">Flag</a></div><div class="sidebar-section-children"><a href="LuCI.form.GridSection.html">GridSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.HiddenValue.html">HiddenValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.JSONMap.html">JSONMap</a></div><div class="sidebar-section-children"><a href="LuCI.form.ListValue.html">ListValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.Map.html">Map</a></div><div class="sidebar-section-children"><a href="LuCI.form.MultiValue.html">MultiValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.NamedSection.html">NamedSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.RangeSliderValue.html">RangeSliderValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.RichListValue.html">RichListValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.SectionValue.html">SectionValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.TableSection.html">TableSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.TextValue.html">TextValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.TypedSection.html">TypedSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.Value.html">Value</a></div><div class="sidebar-section-children"><a href="LuCI.fs.html">fs</a></div><div class="sidebar-section-children"><a href="LuCI.headers.html">headers</a></div><div class="sidebar-section-children"><a href="LuCI.network.html">network</a></div><div class="sidebar-section-children"><a href="LuCI.network.Device.html">Device</a></div><div class="sidebar-section-children"><a href="LuCI.network.Hosts.html">Hosts</a></div><div class="sidebar-section-children"><a href="LuCI.network.Protocol.html">Protocol</a></div><div class="sidebar-section-children"><a href="LuCI.network.WifiDevice.html">WifiDevice</a></div><div class="sidebar-section-children"><a href="LuCI.network.WifiNetwork.html">WifiNetwork</a></div><div class="sidebar-section-children"><a href="LuCI.network.WifiVlan.html">WifiVlan</a></div><div class="sidebar-section-children"><a href="LuCI.poll.html">poll</a></div><div class="sidebar-section-children"><a href="LuCI.request.html">request</a></div><div class="sidebar-section-children"><a href="LuCI.request.poll.html">poll</a></div><div class="sidebar-section-children"><a href="LuCI.response.html">response</a></div><div class="sidebar-section-children"><a href="LuCI.rpc.html">rpc</a></div><div class="sidebar-section-children"><a href="LuCI.session.html">session</a></div><div class="sidebar-section-children"><a href="LuCI.uci.html">uci</a></div><div class="sidebar-section-children"><a href="LuCI.ui.html">ui</a></div><div class="sidebar-section-children"><a href="LuCI.ui.AbstractElement.html">AbstractElement</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Checkbox.html">Checkbox</a></div><div class="sidebar-section-children"><a href="LuCI.ui.ComboButton.html">ComboButton</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Combobox.html">Combobox</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Dropdown.html">Dropdown</a></div><div class="sidebar-section-children"><a href="LuCI.ui.DynamicList.html">DynamicList</a></div><div class="sidebar-section-children"><a href="LuCI.ui.FileUpload.html">FileUpload</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Hiddenfield.html">Hiddenfield</a></div><div class="sidebar-section-children"><a href="LuCI.ui.RangeSlider.html">RangeSlider</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Select.html">Select</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Textarea.html">Textarea</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Textfield.html">Textfield</a></div><div class="sidebar-section-children"><a href="LuCI.ui.changes.html">changes</a></div><div class="sidebar-section-children"><a href="LuCI.ui.menu.html">menu</a></div><div class="sidebar-section-children"><a href="LuCI.ui.tabs.html">tabs</a></div><div class="sidebar-section-children"><a href="LuCI.validation.html">validation</a></div><div class="sidebar-section-children"><a href="LuCI.validation.Validator.html">Validator</a></div><div class="sidebar-section-children"><a href="LuCI.validation.ValidatorFactory.html">ValidatorFactory</a></div><div class="sidebar-section-children"><a href="LuCI.view.html">view</a></div><div class="sidebar-section-children"><a href="LuCI.xhr.html">xhr</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-externals"><div>Externals</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="external-String.html">String</a></div></div></div></div></div><div class="navbar-container" id="VuAckcnZhf"><nav class="navbar"><div class="navbar-left-items"><div class="github-home navbar-item"><a id="" href="https://github.com/openwrt/luci" target="">GitHub Project Page</a></div></div><div class="navbar-right-items"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#dark-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div><nav></nav></nav></div><div class="toc-container"><div class="toc-content"><span class="bold">On this page</span><div id="eed4d2a0bfd64539bb9df78095dec881"></div></div></div><div class="body-wrapper"><div class="main-content"><div class="main-wrapper"><section><header><h1 id="Protocol-title" class="has-anchor"><span class="ancestors"><a href="LuCI.html">LuCI</a><a href="LuCI.network.html">.network</a>.</span> Protocol</h1><div class="class-description"><p>The <code>Network.Protocol</code> class serves as the base for protocol-specific subclasses which describe logical UCI networks defined by <code>config interface</code> sections in <code>/etc/config/network</code>.</p></div></header><article><div class="container-overview"><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line1996">line 1996</a></li></ul></dd></div></dl></div><h2 id="methods" class="subsection-title has-anchor">Methods</h2><h3 class="name has-anchor" id="addDevice"><span class="type-signature"></span>addDevice<span class="signature">(device)</span><span class="type-signature"> &rarr; {boolean}</span></h3><div class="description"><p>Add the given network device to the logical interface.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>device</code></td><td class="type"><span class="param-type"><a href="LuCI.network.Protocol.html">LuCI.<wbr>network.<wbr>Protocol</a></span> |<wbr> <span class="param-type"><a href="LuCI.network.Device.html">LuCI.<wbr>network.<wbr>Device</a></span> |<wbr> <span class="param-type"><a href="LuCI.network.WifiDevice.html">LuCI.<wbr>network.<wbr>WifiDevice</a></span> |<wbr> <span class="param-type"><a href="LuCI.network.WifiNetwork.html">LuCI.<wbr>network.<wbr>WifiNetwork</a></span> |<wbr> <span class="param-type">string</span></td><td class="description last"><p>The object or device name to add to the logical interface. In case the given argument is not a string, it is resolved though the <a href="LuCI.network.html#getIfnameOf"><code>Network.getIfnameOf()</code></a> function.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2650">line 2650</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns <code>true</code> if the device name has been added or <code>false</code> if any argument was invalid, if the device was already part of the logical interface or if the logical interface is virtual.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">boolean</span></dd></dl></div><h3 class="name has-anchor" id="containsDevice"><span class="type-signature"></span>containsDevice<span class="signature">(device)</span><span class="type-signature"> &rarr; {boolean}</span></h3><div class="description"><p>Checks whether this logical interface contains the given device object.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>device</code></td><td class="type"><span class="param-type"><a href="LuCI.network.Protocol.html">LuCI.<wbr>network.<wbr>Protocol</a></span> |<wbr> <span class="param-type"><a href="LuCI.network.Device.html">LuCI.<wbr>network.<wbr>Device</a></span> |<wbr> <span class="param-type"><a href="LuCI.network.WifiDevice.html">LuCI.<wbr>network.<wbr>WifiDevice</a></span> |<wbr> <span class="param-type"><a href="LuCI.network.WifiNetwork.html">LuCI.<wbr>network.<wbr>WifiNetwork</a></span> |<wbr> <span class="param-type">string</span></td><td class="description last"><p>The object or device name to check. In case the given argument is not a string, it is resolved though the <a href="LuCI.network.html#getIfnameOf"><code>Network.getIfnameOf()</code></a> function.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2816">line 2816</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns <code>true</code> when this logical interface contains the given network device or <code>false</code> if not.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">boolean</span></dd></dl></div><h3 class="name has-anchor" id="deleteConfiguration"><span class="type-signature">(abstract) </span>deleteConfiguration<span class="signature">()</span><span class="type-signature"> &rarr; {*|Promise.&lt;*>}</span></h3><div class="description"><p>Cleanup related configuration entries.</p><p>This function will be invoked if an interface is about to be removed from the configuration and is responsible for performing any required cleanup tasks, such as unsetting uci entries in related configurations.</p><p>It should be overridden by protocol specific subclasses.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2863">line 2863</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>This function may return a promise which is awaited before the rest of the configuration is removed. Any non-promise return value and any resolved promise value is ignored. If the returned promise is rejected, the interface removal will be aborted.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">*</span> |<wbr> <span class="param-type">Promise.&lt;*></span></dd></dl></div><h3 class="name has-anchor" id="deleteDevice"><span class="type-signature"></span>deleteDevice<span class="signature">(device)</span><span class="type-signature"> &rarr; {boolean}</span></h3><div class="description"><p>Remove the given network device from the logical interface.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>device</code></td><td class="type"><span class="param-type"><a href="LuCI.network.Protocol.html">LuCI.<wbr>network.<wbr>Protocol</a></span> |<wbr> <span class="param-type"><a href="LuCI.network.Device.html">LuCI.<wbr>network.<wbr>Device</a></span> |<wbr> <span class="param-type"><a href="LuCI.network.WifiDevice.html">LuCI.<wbr>network.<wbr>WifiDevice</a></span> |<wbr> <span class="param-type"><a href="LuCI.network.WifiNetwork.html">LuCI.<wbr>network.<wbr>WifiNetwork</a></span> |<wbr> <span class="param-type">string</span></td><td class="description last"><p>The object or device name to remove from the logical interface. In case the given argument is not a string, it is resolved though the <a href="LuCI.network.html#getIfnameOf"><code>Network.getIfnameOf()</code></a> function.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2677">line 2677</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns <code>true</code> if the device name has been added or <code>false</code> if any argument was invalid, if the device was already part of the logical interface or if the logical interface is virtual.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">boolean</span></dd></dl></div><h3 class="name has-anchor" id="get"><span class="type-signature"></span>get<span class="signature">(opt)</span><span class="type-signature"> &rarr; {null|string|Array.&lt;string>}</span></h3><div class="description"><p>Read the given UCI option value of this network.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>opt</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The UCI option name to read.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2029">line 2029</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the UCI option value or <code>null</code> if the requested option is not found.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">null</span> |<wbr> <span class="param-type">string</span> |<wbr> <span class="param-type">Array.&lt;string></span></dd></dl></div><h3 class="name has-anchor" id="getDNS6Addrs"><span class="type-signature"></span>getDNS6Addrs<span class="signature">()</span><span class="type-signature"> &rarr; {Array.&lt;string>}</span></h3><div class="description"><p>Query the IPv6 DNS servers associated with the logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2370">line 2370</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns an array of IPv6 DNS servers registered by the remote protocol back-end.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">Array.&lt;string></span></dd></dl></div><h3 class="name has-anchor" id="getDNSAddrs"><span class="type-signature"></span>getDNSAddrs<span class="signature">()</span><span class="type-signature"> &rarr; {Array.&lt;string>}</span></h3><div class="description"><p>Query the IPv4 DNS servers associated with the logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2282">line 2282</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns an array of IPv4 DNS servers registered by the remote protocol back-end.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">Array.&lt;string></span></dd></dl></div><h3 class="name has-anchor" id="getDevice"><span class="type-signature"></span>getDevice<span class="signature">()</span><span class="type-signature"> &rarr; {<a href="LuCI.network.Device.html">LuCI.network.Device</a>}</span></h3><div class="description"><p>Returns the Linux network device associated with this logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2704">line 2704</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns a <code>Network.Device</code> class instance representing the expected Linux network device according to the configuration.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type"><a href="LuCI.network.Device.html">LuCI.<wbr>network.<wbr>Device</a></span></dd></dl></div><h3 class="name has-anchor" id="getDevices"><span class="type-signature"></span>getDevices<span class="signature">()</span><span class="type-signature"> &rarr; {null|Array.&lt;<a href="LuCI.network.Device.html">LuCI.network.Device</a>>}</span></h3><div class="description"><p>Returns a list of network sub-devices associated with this logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2765">line 2765</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns an array of <code>Network.Device</code> class instances representing the sub-devices attached to this logical interface or <code>null</code> if the logical interface does not support sub-devices, e.g. because it is virtual and not a bridge.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">null</span> |<wbr> <span class="param-type">Array.&lt;<a href="LuCI.network.Device.html">LuCI.network.Device</a>></span></dd></dl></div><h3 class="name has-anchor" id="getErrors"><span class="type-signature"></span>getErrors<span class="signature">()</span><span class="type-signature"> &rarr; {Array.&lt;string>}</span></h3><div class="description"><p>Query interface error messages published in <code>ubus</code> runtime state.</p><p>Interface errors are emitted by remote protocol handlers if the setup of the underlying logical interface failed, e.g. due to bad configuration or network connectivity issues.</p><p>This function will translate the found error codes to human readable messages using the descriptions registered by <a href="LuCI.network.html#registerErrorCode"><code>Network.registerErrorCode()</code></a> and fall back to <code>&quot;Unknown error (%s)&quot;</code> where <code>%s</code> is replaced by the error code in case no translation can be found.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2433">line 2433</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns an array of translated interface error messages.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">Array.&lt;string></span></dd></dl></div><h3 class="name has-anchor" id="getExpiry"><span class="type-signature"></span>getExpiry<span class="signature">()</span><span class="type-signature"> &rarr; {number}</span></h3><div class="description"><p>Get the logical interface expiry time in seconds.</p><p>For protocols that have a concept of a lease, such as DHCP or DHCPv6, this function returns the remaining time in seconds until the lease expires.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2150">line 2150</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the number of seconds until the lease expires or <code>-1</code> if it isn't applicable to the associated protocol.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">number</span></dd></dl></div><h3 class="name has-anchor" id="getGateway6Addr"><span class="type-signature"></span>getGateway6Addr<span class="signature">()</span><span class="type-signature"> &rarr; {string}</span></h3><div class="description"><p>Query the gateway (nexthop) of the IPv6 default route associated with this logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2350">line 2350</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns a string containing the IPv6 nexthop address of the associated default route or <code>null</code> if no default route was found.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="getGatewayAddr"><span class="type-signature"></span>getGatewayAddr<span class="signature">()</span><span class="type-signature"> &rarr; {string}</span></h3><div class="description"><p>Query the gateway (nexthop) of the default route associated with this logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2262">line 2262</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns a string containing the IPv4 nexthop address of the associated default route or <code>null</code> if no default route was found.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="getI18n"><span class="type-signature">(abstract) </span>getI18n<span class="signature">()</span><span class="type-signature"> &rarr; {string}</span></h3><div class="description"><p>Return a human readable description for the protocol, such as <code>Static address</code> or <code>DHCP client</code>.</p><p>This function should be overridden by subclasses.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2095">line 2095</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the description string.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="getIP6Addr"><span class="type-signature"></span>getIP6Addr<span class="signature">()</span><span class="type-signature"> &rarr; {null|string}</span></h3><div class="description"><p>Query the first (primary) IPv6 address of the logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2301">line 2301</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the primary IPv6 address registered by the protocol handler in CIDR notation or <code>null</code> if no IPv6 addresses were set.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">null</span> |<wbr> <span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="getIP6Addrs"><span class="type-signature"></span>getIP6Addrs<span class="signature">()</span><span class="type-signature"> &rarr; {Array.&lt;string>}</span></h3><div class="description"><p>Query all IPv6 addresses of the logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2323">line 2323</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns an array of IPv6 addresses in CIDR notation which have been registered by the protocol handler. The order of the resulting array follows the order of the addresses in <code>ubus</code> runtime information.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">Array.&lt;string></span></dd></dl></div><h3 class="name has-anchor" id="getIP6Prefix"><span class="type-signature"></span>getIP6Prefix<span class="signature">()</span><span class="type-signature"> &rarr; {null|string}</span></h3><div class="description"><p>Query the routed IPv6 prefix associated with the logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2389">line 2389</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the routed IPv6 prefix registered by the remote protocol handler or <code>null</code> if no prefix is present.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">null</span> |<wbr> <span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="getIP6Prefixes"><span class="type-signature"></span>getIP6Prefixes<span class="signature">()</span><span class="type-signature"> &rarr; {null|Array.&lt;string>}</span></h3><div class="description"><p>Query the routed IPv6 prefixes associated with the logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2405">line 2405</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns an array of the routed IPv6 prefixes registered by the remote protocol handler or <code>null</code> if no prefixes are present.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">null</span> |<wbr> <span class="param-type">Array.&lt;string></span></dd></dl></div><h3 class="name has-anchor" id="getIPAddr"><span class="type-signature"></span>getIPAddr<span class="signature">()</span><span class="type-signature"> &rarr; {null|string}</span></h3><div class="description"><p>Query the first (primary) IPv4 address of the logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2217">line 2217</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the primary IPv4 address registered by the protocol handler or <code>null</code> if no IPv4 addresses were set.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">null</span> |<wbr> <span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="getIPAddrs"><span class="type-signature"></span>getIPAddrs<span class="signature">()</span><span class="type-signature"> &rarr; {Array.&lt;string>}</span></h3><div class="description"><p>Query all IPv4 addresses of the logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2230">line 2230</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns an array of IPv4 addresses in CIDR notation which have been registered by the protocol handler. The order of the resulting array follows the order of the addresses in <code>ubus</code> runtime information.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">Array.&lt;string></span></dd></dl></div><h3 class="name has-anchor" id="getIfname"><span class="type-signature"></span>getIfname<span class="signature">()</span><span class="type-signature"> &rarr; {null|string}</span></h3><div class="description"><p>Get the associated Linux network device of this network.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2055">line 2055</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the name of the associated network device or <code>null</code> if it could not be determined.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">null</span> |<wbr> <span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="getL2Device"><span class="type-signature"></span>getL2Device<span class="signature">()</span><span class="type-signature"> &rarr; {<a href="LuCI.network.Device.html">LuCI.network.Device</a>}</span></h3><div class="description"><p>Returns the layer 2 Linux network device currently associated with this logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2737">line 2737</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns a <code>Network.Device</code> class instance representing the Linux network device currently associated with the logical interface.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type"><a href="LuCI.network.Device.html">LuCI.<wbr>network.<wbr>Device</a></span></dd></dl></div><h3 class="name has-anchor" id="getL3Device"><span class="type-signature"></span>getL3Device<span class="signature">()</span><span class="type-signature"> &rarr; {<a href="LuCI.network.Device.html">LuCI.network.Device</a>}</span></h3><div class="description"><p>Returns the layer 3 Linux network device currently associated with this logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2750">line 2750</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns a <code>Network.Device</code> class instance representing the Linux network device currently associated with the logical interface.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type"><a href="LuCI.network.Device.html">LuCI.<wbr>network.<wbr>Device</a></span></dd></dl></div><h3 class="name has-anchor" id="getMetric"><span class="type-signature"></span>getMetric<span class="signature">()</span><span class="type-signature"> &rarr; {number}</span></h3><div class="description"><p>Get the metric value of the logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2185">line 2185</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the current metric value used for device and network routes spawned by the associated logical interface.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">number</span></dd></dl></div><h3 class="name has-anchor" id="getName"><span class="type-signature"></span>getName<span class="signature">()</span><span class="type-signature"> &rarr; {string}</span></h3><div class="description"><p>Get the name of the associated logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2125">line 2125</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the logical interface name, such as <code>lan</code> or <code>wan</code>.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="getNetmask"><span class="type-signature"></span>getNetmask<span class="signature">()</span><span class="type-signature"> &rarr; {null|string}</span></h3><div class="description"><p>Query the first (primary) IPv4 netmask of the logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2248">line 2248</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the netmask of the primary IPv4 address registered by the protocol handler or <code>null</code> if no IPv4 addresses were set.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">null</span> |<wbr> <span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="getPackageName"><span class="type-signature">(abstract) </span>getPackageName<span class="signature">()</span><span class="type-signature"> &rarr; {string}</span></h3><div class="description"><p>Gets the name of the package providing the protocol functionality. The package is available via the system default package manager. This is used when a config refers to a protocol handler which is not yet installed.</p><p>This function should be overridden by protocol specific subclasses.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2475">line 2475</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the name of the package to download, required for the protocol to function, e.g. <code>odhcp6c</code> for the <code>dhcpv6</code> protocol.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="getProtocol"><span class="type-signature">(abstract) </span>getProtocol<span class="signature">()</span><span class="type-signature"> &rarr; {string}</span></h3><div class="description"><p>Get the name of this network protocol class.</p><p>This function will be overridden by subclasses created by <a href="LuCI.network.html#registerProtocol"><code>Network.registerProtocol()</code></a>.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2081">line 2081</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the name of the network protocol implementation, e.g. <code>static</code> or <code>dhcp</code>.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="getType"><span class="type-signature"></span>getType<span class="signature">()</span><span class="type-signature"> &rarr; {null|string}</span></h3><div class="description"><p>Get the type of the underlying interface.</p><p>This function actually is a convenience wrapper around <code>proto.get(&quot;type&quot;)</code> and is mainly used by other <code>LuCI.network</code> code to check whether the interface is declared as bridge in UCI.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2115">line 2115</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the value of the <code>type</code> option of the associated logical interface or <code>null</code> if no <code>type</code> option is set.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">null</span> |<wbr> <span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="getUptime"><span class="type-signature"></span>getUptime<span class="signature">()</span><span class="type-signature"> &rarr; {number}</span></h3><div class="description"><p>Get the uptime of the logical interface.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2135">line 2135</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the uptime of the associated interface in seconds.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">number</span></dd></dl></div><h3 class="name has-anchor" id="getZoneName"><span class="type-signature"></span>getZoneName<span class="signature">()</span><span class="type-signature"> &rarr; {null|string}</span></h3><div class="description"><p>Get the requested firewall zone name of the logical interface.</p><p>Some protocol implementations request a specific firewall zone to trigger inclusion of their resulting network devices into the firewall rule set.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2201">line 2201</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the requested firewall zone name as published in the <code>ubus</code> runtime information or <code>null</code> if the remote protocol handler didn't request a zone.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">null</span> |<wbr> <span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="isAlias"><span class="type-signature"></span>isAlias<span class="signature">()</span><span class="type-signature"> &rarr; {null|string}</span></h3><div class="description"><p>Checks whether this interface is an alias interface.</p><p>Alias interfaces are interfaces layering on top of another interface and are denoted by a special <code>@interfacename</code> notation in the underlying <code>device</code> option.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2591">line 2591</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns the name of the parent interface if this logical interface is an alias or <code>null</code> if it is not an alias interface.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">null</span> |<wbr> <span class="param-type">string</span></dd></dl></div><h3 class="name has-anchor" id="isBridge"><span class="type-signature"></span>isBridge<span class="signature">()</span><span class="type-signature"> &rarr; {boolean}</span></h3><div class="description"><p>Checks whether the underlying logical interface is declared as bridge.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2458">line 2458</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns <code>true</code> when the interface is declared with <code>option type bridge</code> and when the associated protocol implementation is not marked virtual or <code>false</code> when the logical interface is no bridge.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">boolean</span></dd></dl></div><h3 class="name has-anchor" id="isCreateable"><span class="type-signature">(abstract) </span>isCreateable<span class="signature">(ifname)</span><span class="type-signature"> &rarr; {Promise.&lt;void>}</span></h3><div class="description"><p>Check function for the protocol handler if a new interface is creatable.</p><p>This function should be overridden by protocol specific subclasses.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>ifname</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The name of the interface to be created.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2493">line 2493</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns a promise resolving if a new interface is creatable, else rejects with an error message string.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">Promise.&lt;void></span></dd></dl></div><h3 class="name has-anchor" id="isDynamic"><span class="type-signature"></span>isDynamic<span class="signature">()</span><span class="type-signature"> &rarr; {boolean}</span></h3><div class="description"><p>Checks whether this logical interface is dynamic.</p><p>A dynamic interface is an interface that has been created at runtime. E.g. as a sub-interface of another interface, but which is not backed by any user configuration. Such dynamic interfaces cannot be edited but only brought down or restarted.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2566">line 2566</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns a boolean indicating whether this interface is dynamic (<code>true</code>) or not (<code>false</code>).</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">boolean</span></dd></dl></div><h3 class="name has-anchor" id="isEmpty"><span class="type-signature"></span>isEmpty<span class="signature">()</span><span class="type-signature"> &rarr; {boolean}</span></h3><div class="description"><p>Checks whether this logical interface is &quot;empty&quot;, where empty means that it has no network devices attached.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2611">line 2611</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns <code>true</code> if this logical interface is empty, else <code>false</code>.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">boolean</span></dd></dl></div><h3 class="name has-anchor" id="isFloating"><span class="type-signature"></span>isFloating<span class="signature">()</span><span class="type-signature"> &rarr; {boolean}</span></h3><div class="description"><p>Checks whether this protocol is &quot;floating&quot;.</p><p>A &quot;floating&quot; protocol is a protocol which spawns its own interfaces on demand, like a virtual one but which relies on an existing lower level interface to initiate the connection.</p><p>An example for such a protocol is &quot;pppoe&quot;.</p><p>This function exists for backwards compatibility with older code but should not be used anymore.</p></div><dl class="details"><div class="details-item-container"><dt class="important tag-deprecated bold">Deprecated</dt><dd class="tag-deprecated"><ul><li>Yes</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2550">line 2550</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns a boolean indicating whether this protocol is floating (<code>true</code>) or not (<code>false</code>).</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">boolean</span></dd></dl></div><h3 class="name has-anchor" id="isInstalled"><span class="type-signature">(abstract) </span>isInstalled<span class="signature">()</span><span class="type-signature"> &rarr; {boolean}</span></h3><div class="description"><p>Checks whether the protocol functionality is installed.</p><p>This function exists for compatibility with old code, it always returns <code>true</code>.</p></div><dl class="details"><div class="details-item-container"><dt class="important tag-deprecated bold">Deprecated</dt><dd class="tag-deprecated"><ul><li>Yes</li></ul></dd></div><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2509">line 2509</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns <code>true</code> if the protocol support is installed, else <code>false</code>.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">boolean</span></dd></dl></div><h3 class="name has-anchor" id="isPending"><span class="type-signature"></span>isPending<span class="signature">()</span><span class="type-signature"> &rarr; {boolean}</span></h3><div class="description"><p>Checks whether this logical interface is pending.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2576">line 2576</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>returns <code>true</code> when the interface is pending or <code>false</code> when it is not.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">boolean</span></dd></dl></div><h3 class="name has-anchor" id="isUp"><span class="type-signature"></span>isUp<span class="signature">()</span><span class="type-signature"> &rarr; {boolean}</span></h3><div class="description"><p>Checks whether this logical interface is configured and running.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2633">line 2633</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns <code>true</code> when the interface is active or <code>false</code> when it is not.</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">boolean</span></dd></dl></div><h3 class="name has-anchor" id="isVirtual"><span class="type-signature"></span>isVirtual<span class="signature">()</span><span class="type-signature"> &rarr; {boolean}</span></h3><div class="description"><p>Checks whether this protocol is &quot;virtual&quot;.</p><p>A &quot;virtual&quot; protocol is a protocol which spawns its own interfaces on demand instead of using existing physical interfaces.</p><p>Examples for virtual protocols are <code>6in4</code> which <code>gre</code> spawn a tunnel network device on startup, examples for non-virtual protocols are <code>dhcp</code> or <code>static</code> which apply IP configuration to existing interfaces.</p><p>This function should be overridden by subclasses.</p></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2529">line 2529</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><div class="param-desc"><p>Returns a boolean indicating whether the underlying protocol spawns dynamic interfaces (<code>true</code>) or not (<code>false</code>).</p></div><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">boolean</span></dd></dl></div><h3 class="name has-anchor" id="set"><span class="type-signature"></span>set<span class="signature">(opt, val)</span><span class="type-signature"> &rarr; {null}</span></h3><div class="description"><p>Set the given UCI option of this network to the given value.</p></div><div class="method-member-container flex flex-col w-100 overflow-auto mt-20"><strong>Parameters:</strong><table class="params"><thead><tr><th>Name</th><th>Type</th><th class="last">Description</th></tr></thead><tbody><tr><td class="name"><code>opt</code></td><td class="type"><span class="param-type">string</span></td><td class="description last"><p>The name of the UCI option to set.</p></td></tr><tr><td class="name"><code>val</code></td><td class="type"><span class="param-type">null</span> |<wbr> <span class="param-type">string</span> |<wbr> <span class="param-type">Array.&lt;string></span></td><td class="description last"><p>The value to set or <code>null</code> to remove the given option from the configuration.</p></td></tr></tbody></table></div><dl class="details"><div class="details-item-container"><dt class="tag-source bold">Source</dt><dd class="tag-source"><ul><li><a href="network.js.html">network.js</a>, <a href="network.js.html#line2044">line 2044</a></li></ul></dd></div></dl><div class="method-member-container mt-20"><strong>Returns:</strong><dl class="param-type"><dt>Type:&nbsp;</dt><dd><span class="param-type">null</span></dd></dl></div></article></section></div></div></div><div class="search-container" id="PkfLWpAbet" style="display:none"><div class="wrapper" id="iCxFxjkHbP"><button class="icon-button search-close-button" id="VjLlGakifb" aria-label="close search"><svg><use xlink:href="#close-icon"></use></svg></button><div class="search-box-c"><svg><use xlink:href="#search-icon"></use></svg> <input type="text" id="vpcKVYIppa" class="search-input" placeholder="Search..." autofocus></div><div class="search-result-c" id="fWwVHRuDuN"><span class="search-result-c-text">Type anything to view search result</span></div></div></div><div class="mobile-menu-icon-container"><button class="icon-button" id="mobile-menu" data-isopen="false" aria-label="menu"><svg><use xlink:href="#menu-icon"></use></svg></button></div><div id="mobile-sidebar" class="mobile-sidebar-container"><div class="mobile-sidebar-wrapper"><a href="/" class="sidebar-title sidebar-title-anchor">LuCI Documentation</a><div class="mobile-nav-links"><div class="github-home navbar-item"><a id="" href="https://github.com/openwrt/luci" target="">GitHub Project Page</a></div></div><div class="mobile-sidebar-items-c"><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-tutorials"><div>Tutorials</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="tutorial-JsonRpcHowTo.html">Using JSON RPC daemon</a></div><div class="sidebar-section-children"><a href="tutorial-Modules.html">Modules</a></div><div class="sidebar-section-children"><a href="tutorial-ThemesHowTo.html">Making Themes</a></div><div class="sidebar-section-children"><a href="tutorial-i18n.html">Internationalisation - i18n</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-modules"><div>Modules</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="LuCI.module_cbi.html">cbi</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-classes"><div>Classes</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="LuCI.html">LuCI</a></div><div class="sidebar-section-children"><a href="LuCI.baseclass.html">baseclass</a></div><div class="sidebar-section-children"><a href="LuCI.dom.html">dom</a></div><div class="sidebar-section-children"><a href="LuCI.form.html">form</a></div><div class="sidebar-section-children"><a href="LuCI.form.AbstractElement.html">AbstractElement</a></div><div class="sidebar-section-children"><a href="LuCI.form.AbstractSection.html">AbstractSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.AbstractValue.html">AbstractValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.Button.html">Button</a></div><div class="sidebar-section-children"><a href="LuCI.form.DirectoryPicker.html">DirectoryPicker</a></div><div class="sidebar-section-children"><a href="LuCI.form.DummyValue.html">DummyValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.DynamicList.html">DynamicList</a></div><div class="sidebar-section-children"><a href="LuCI.form.FileUpload.html">FileUpload</a></div><div class="sidebar-section-children"><a href="LuCI.form.Flag.html">Flag</a></div><div class="sidebar-section-children"><a href="LuCI.form.GridSection.html">GridSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.HiddenValue.html">HiddenValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.JSONMap.html">JSONMap</a></div><div class="sidebar-section-children"><a href="LuCI.form.ListValue.html">ListValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.Map.html">Map</a></div><div class="sidebar-section-children"><a href="LuCI.form.MultiValue.html">MultiValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.NamedSection.html">NamedSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.RangeSliderValue.html">RangeSliderValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.RichListValue.html">RichListValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.SectionValue.html">SectionValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.TableSection.html">TableSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.TextValue.html">TextValue</a></div><div class="sidebar-section-children"><a href="LuCI.form.TypedSection.html">TypedSection</a></div><div class="sidebar-section-children"><a href="LuCI.form.Value.html">Value</a></div><div class="sidebar-section-children"><a href="LuCI.fs.html">fs</a></div><div class="sidebar-section-children"><a href="LuCI.headers.html">headers</a></div><div class="sidebar-section-children"><a href="LuCI.network.html">network</a></div><div class="sidebar-section-children"><a href="LuCI.network.Device.html">Device</a></div><div class="sidebar-section-children"><a href="LuCI.network.Hosts.html">Hosts</a></div><div class="sidebar-section-children"><a href="LuCI.network.Protocol.html">Protocol</a></div><div class="sidebar-section-children"><a href="LuCI.network.WifiDevice.html">WifiDevice</a></div><div class="sidebar-section-children"><a href="LuCI.network.WifiNetwork.html">WifiNetwork</a></div><div class="sidebar-section-children"><a href="LuCI.network.WifiVlan.html">WifiVlan</a></div><div class="sidebar-section-children"><a href="LuCI.poll.html">poll</a></div><div class="sidebar-section-children"><a href="LuCI.request.html">request</a></div><div class="sidebar-section-children"><a href="LuCI.request.poll.html">poll</a></div><div class="sidebar-section-children"><a href="LuCI.response.html">response</a></div><div class="sidebar-section-children"><a href="LuCI.rpc.html">rpc</a></div><div class="sidebar-section-children"><a href="LuCI.session.html">session</a></div><div class="sidebar-section-children"><a href="LuCI.uci.html">uci</a></div><div class="sidebar-section-children"><a href="LuCI.ui.html">ui</a></div><div class="sidebar-section-children"><a href="LuCI.ui.AbstractElement.html">AbstractElement</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Checkbox.html">Checkbox</a></div><div class="sidebar-section-children"><a href="LuCI.ui.ComboButton.html">ComboButton</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Combobox.html">Combobox</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Dropdown.html">Dropdown</a></div><div class="sidebar-section-children"><a href="LuCI.ui.DynamicList.html">DynamicList</a></div><div class="sidebar-section-children"><a href="LuCI.ui.FileUpload.html">FileUpload</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Hiddenfield.html">Hiddenfield</a></div><div class="sidebar-section-children"><a href="LuCI.ui.RangeSlider.html">RangeSlider</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Select.html">Select</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Textarea.html">Textarea</a></div><div class="sidebar-section-children"><a href="LuCI.ui.Textfield.html">Textfield</a></div><div class="sidebar-section-children"><a href="LuCI.ui.changes.html">changes</a></div><div class="sidebar-section-children"><a href="LuCI.ui.menu.html">menu</a></div><div class="sidebar-section-children"><a href="LuCI.ui.tabs.html">tabs</a></div><div class="sidebar-section-children"><a href="LuCI.validation.html">validation</a></div><div class="sidebar-section-children"><a href="LuCI.validation.Validator.html">Validator</a></div><div class="sidebar-section-children"><a href="LuCI.validation.ValidatorFactory.html">ValidatorFactory</a></div><div class="sidebar-section-children"><a href="LuCI.view.html">view</a></div><div class="sidebar-section-children"><a href="LuCI.xhr.html">xhr</a></div></div><div class="sidebar-section-title with-arrow" data-isopen="false" id="sidebar-externals"><div>Externals</div><svg><use xlink:href="#down-icon"></use></svg></div><div class="sidebar-section-children-container"><div class="sidebar-section-children"><a href="external-String.html">String</a></div></div></div><div class="mobile-navbar-actions"><div class="navbar-right-item"><button class="icon-button search-button" aria-label="open-search"><svg><use xlink:href="#search-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button theme-toggle" aria-label="toggle-theme"><svg><use class="theme-svg-use" xlink:href="#dark-theme-icon"></use></svg></button></div><div class="navbar-right-item"><button class="icon-button font-size" aria-label="change-font-size"><svg><use xlink:href="#font-size-icon"></use></svg></button></div></div></div></div><script type="text/javascript" src="scripts/core.min.js"></script><script src="scripts/search.min.js" defer="defer"></script><script src="scripts/third-party/fuse.js" defer="defer"></script><script type="text/javascript">var tocbotInstance=tocbot.init({tocSelector:"#eed4d2a0bfd64539bb9df78095dec881",contentSelector:".main-content",headingSelector:"h1, h2, h3",hasInnerContainers:!0,scrollContainer:".main-content",headingsOffset:130,onClick:bringLinkToView})</script></body></html>