diff --git a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js
index 80b02c96fb..e71cb76974 100644
--- a/modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js
+++ b/modules/luci-mod-network/htdocs/luci-static/resources/view/network/interfaces.js
@@ -616,25 +616,68 @@ return view.extend({
return form.Value.prototype.validate.apply(this, [ section_id, value ]);
};
- ss.taboption('advanced', form.DynamicList, 'dhcp_option', _('DHCP-Options'), _('Define additional DHCP options, for example "6,192.168.2.1,192.168.2.2" which advertises different DNS servers to clients.'));
+ ss.taboption('advanced', form.DynamicList, 'dhcp_option', _('DHCP-Options'), _('Define additional DHCP options, \
+ for example "6,192.168.2.1,192.168.2.2" which advertises different DNS servers to clients.'));
for (var i = 0; i < ss.children.length; i++)
if (ss.children[i].option != 'ignore')
ss.children[i].depends('ignore', '0');
- so = ss.taboption('ipv6', form.ListValue, 'ra', _('Router Advertisement-Service'));
+ so = ss.taboption('ipv6', form.ListValue, 'ra', _('RA-Service'), _('
\
+ - server mode: Router advertises itself as the default IPv6 gateway \
+ via RA messages \
+ (to
ff02::1) and provides PD to downstream devices. \
+ - relay mode: Router relays RA from upstream, \
+ and extends upstream (e.g. WAN) interface config and prefix to downstream (e.g. LAN) interfaces.
\
+ - hybrid mode: Router does both server+relay; extends upstream config and prefix downstream, and \
+ uses PD locally.
'));
so.value('', _('disabled'));
so.value('server', _('server mode'));
so.value('relay', _('relay mode'));
so.value('hybrid', _('hybrid mode'));
- so = ss.taboption('ipv6', form.ListValue, 'dhcpv6', _('DHCPv6-Service'));
+ so = ss.taboption('ipv6', form.ListValue, 'ra_management', _('DHCPv6-Mode'), _('Default is stateless + stateful
\
+ \
+ - stateless: Router advertises prefixes, host uses SLAAC \
+ to self assign its own address. No DHCPv6.
\
+ - stateless + stateful: SLAAC. In addition, router assigns an IPv6 address to a host via DHCPv6.
\
+ - stateful-only: No SLAAC. Router assigns an IPv6 address to a host via DHCPv6.
'));
+ so.value('0', _('stateless'));
+ so.value('1', _('stateless + stateful'));
+ so.value('2', _('stateful-only'));
+ so.depends('dhcpv6', 'server');
+ so.depends('dhcpv6', 'hybrid');
+ so.default = '1';
+
+ so = ss.taboption('ipv6', form.ListValue, 'dhcpv6', _('DHCPv6-Service'), _('\
+ - server mode: Router assigns IPs and delegates prefixes \
+ (PD) to downstream interfaces.
\
+ - relay mode: Router relays WAN interface config downstream. Helps support upstream \
+ links that lack PD.
\
+ - hybrid mode: Router does combination of server+relay.
'));
so.value('', _('disabled'));
so.value('server', _('server mode'));
so.value('relay', _('relay mode'));
so.value('hybrid', _('hybrid mode'));
- so = ss.taboption('ipv6', form.ListValue, 'ndp', _('NDP-Proxy'));
+ so = ss.taboption('ipv6', form.ListValue, 'ndp', _('NDP-Proxy'), _('Reverts to \
+ disabled internally if there are no interfaces with boolean ndproxy_slave set to 1. Think of \
+ NDP Proxy as Proxy ARP for IPv6: unify hosts on different physical \
+ hardware segments into the same IP subnet. Consists of NS and \
+ NA messages. NDP-Proxy \
+ listens for NS on an interface marked with boolean \
+ master as 1 (i.e. upstream), then queries the slave/internal interfaces for that target IP before finally \
+ sending an NA message. \
+ NDP is effectively ARP for IPv6. \
+ NS and NA \
+ detect reachability and duplicate addresses on a link, themselves also a prerequisite for SLAAC autoconfig.
\
+ \
+ - disabled: No NDP messages are proxied through to \
+
ndproxy_slave true interfaces. \
+ - relay mode: Proxies NDP messages from
master to \
+ ndproxy_slave true interfaces. Helps to support provider links without \
+ PD, and to firewall proxied hosts. \
+ - hybrid mode: Relay mode is disabled unless the interface boolean
master is 1.
'));
so.value('', _('disabled'));
so.value('relay', _('relay mode'));
so.value('hybrid', _('hybrid mode'));
@@ -643,15 +686,7 @@ return view.extend({
so.depends('dhcpv6', 'relay');
so.depends('dhcpv6', 'hybrid');
- so = ss.taboption('ipv6', form.ListValue, 'ra_management', _('DHCPv6-Mode'), _('Default is stateless + stateful'));
- so.value('0', _('stateless'));
- so.value('1', _('stateless + stateful'));
- so.value('2', _('stateful-only'));
- so.depends('dhcpv6', 'server');
- so.depends('dhcpv6', 'hybrid');
- so.default = '1';
-
- so = ss.taboption('ipv6', form.Flag, 'ra_default', _('Always announce default router'), _('Announce as default router even if no public prefix is available.'));
+ so = ss.taboption('ipv6', form.Flag, 'ra_default', _('Announce as default router'), _('Always, even if no public prefix is available.'));
so.depends('ra', 'server');
so.depends('ra', 'hybrid');
@@ -878,7 +913,9 @@ return view.extend({
s.addremove = false;
s.anonymous = true;
- o = s.option(form.Value, 'ula_prefix', _('IPv6 ULA-Prefix'));
+ o = s.option(form.Value, 'ula_prefix', _('IPv6 ULA-Prefix'), _('Unique Local Address - in the range fc00::/7. \
+ Typically only within the ‘local’ half fd00::/8. ULA for IPv6 is analogous to IPv4 private network addressing.\
+ This prefix is randomly generated at first install.'));
o.datatype = 'cidr6';
o = s.option(form.Flag, 'packet_steering', _('Packet Steering'), _('Enable packet steering across all CPUs. May help or hinder network speed.'));