Merge branch 'arm-master' into arm-sdk7

arm-sdk7 2021.1.070
pedro 5 years ago
commit fdd136d9a1

@ -338,10 +338,9 @@ void in6_dev_finish_destroy(struct inet6_dev *idev)
snmp6_free_dev(idev); snmp6_free_dev(idev);
call_rcu(&idev->rcu, in6_dev_finish_destroy_rcu); call_rcu(&idev->rcu, in6_dev_finish_destroy_rcu);
} }
EXPORT_SYMBOL(in6_dev_finish_destroy); EXPORT_SYMBOL(in6_dev_finish_destroy);
static struct inet6_dev * ipv6_add_dev(struct net_device *dev) static struct inet6_dev *ipv6_add_dev(struct net_device *dev)
{ {
struct inet6_dev *ndev; struct inet6_dev *ndev;
@ -442,7 +441,7 @@ static struct inet6_dev * ipv6_add_dev(struct net_device *dev)
return ndev; return ndev;
} }
static struct inet6_dev * ipv6_find_idev(struct net_device *dev) static struct inet6_dev *ipv6_find_idev(struct net_device *dev)
{ {
struct inet6_dev *idev; struct inet6_dev *idev;
@ -712,12 +711,9 @@ static void ipv6_del_addr(struct inet6_ifaddr *ifp)
struct inet6_ifaddr *ifa, *ifn; struct inet6_ifaddr *ifa, *ifn;
struct inet6_dev *idev = ifp->idev; struct inet6_dev *idev = ifp->idev;
int state; int state;
int hash;
int deleted = 0, onlink = 0; int deleted = 0, onlink = 0;
unsigned long expires = jiffies; unsigned long expires = jiffies;
hash = ipv6_addr_hash(&ifp->addr);
spin_lock_bh(&ifp->state_lock); spin_lock_bh(&ifp->state_lock);
state = ifp->state; state = ifp->state;
ifp->state = INET6_IFADDR_STATE_DEAD; ifp->state = INET6_IFADDR_STATE_DEAD;
@ -1342,7 +1338,6 @@ int ipv6_chk_prefix(struct in6_addr *addr, struct net_device *dev)
rcu_read_unlock(); rcu_read_unlock();
return onlink; return onlink;
} }
EXPORT_SYMBOL(ipv6_chk_prefix); EXPORT_SYMBOL(ipv6_chk_prefix);
struct inet6_ifaddr *ipv6_get_ifaddr(struct net *net, const struct in6_addr *addr, struct inet6_ifaddr *ipv6_get_ifaddr(struct net *net, const struct in6_addr *addr,
@ -1529,7 +1524,7 @@ static int addrconf_ifid_arcnet(u8 *eui, struct net_device *dev)
if (dev->addr_len != ARCNET_ALEN) if (dev->addr_len != ARCNET_ALEN)
return -1; return -1;
memset(eui, 0, 7); memset(eui, 0, 7);
eui[7] = *(u8*)dev->dev_addr; eui[7] = *(u8 *)dev->dev_addr;
return 0; return 0;
} }
@ -1657,7 +1652,8 @@ out:
in6_dev_put(idev); in6_dev_put(idev);
} }
static int __ipv6_try_regen_rndid(struct inet6_dev *idev, struct in6_addr *tmpaddr) { static int __ipv6_try_regen_rndid(struct inet6_dev *idev, struct in6_addr *tmpaddr)
{
int ret = 0; int ret = 0;
if (tmpaddr && memcmp(idev->rndid, &tmpaddr->s6_addr[8], 8) == 0) if (tmpaddr && memcmp(idev->rndid, &tmpaddr->s6_addr[8], 8) == 0)
@ -1864,7 +1860,7 @@ void addrconf_prefix_rcv(struct net_device *dev, u8 *opt, int len)
/* Try to figure out our local address for this prefix */ /* Try to figure out our local address for this prefix */
if (pinfo->autoconf && in6_dev->cnf.autoconf) { if (pinfo->autoconf && in6_dev->cnf.autoconf) {
struct inet6_ifaddr * ifp; struct inet6_ifaddr *ifp;
struct in6_addr addr; struct in6_addr addr;
int create = 0, update_lft = 0; int create = 0, update_lft = 0;
@ -2290,9 +2286,9 @@ static void sit_add_v4_addrs(struct inet6_dev *idev)
} }
for_each_netdev(net, dev) { for_each_netdev(net, dev) {
struct in_device * in_dev = __in_dev_get_rtnl(dev); struct in_device *in_dev = __in_dev_get_rtnl(dev);
if (in_dev && (dev->flags & IFF_UP)) { if (in_dev && (dev->flags & IFF_UP)) {
struct in_ifaddr * ifa; struct in_ifaddr *ifa;
int flag = scope; int flag = scope;
@ -2338,7 +2334,7 @@ static void init_loopback(struct net_device *dev)
static void addrconf_add_linklocal(struct inet6_dev *idev, struct in6_addr *addr) static void addrconf_add_linklocal(struct inet6_dev *idev, struct in6_addr *addr)
{ {
struct inet6_ifaddr * ifp; struct inet6_ifaddr *ifp;
u32 addr_flags = IFA_F_PERMANENT; u32 addr_flags = IFA_F_PERMANENT;
#ifdef CONFIG_IPV6_OPTIMISTIC_DAD #ifdef CONFIG_IPV6_OPTIMISTIC_DAD
@ -2359,7 +2355,7 @@ static void addrconf_add_linklocal(struct inet6_dev *idev, struct in6_addr *addr
static void addrconf_dev_config(struct net_device *dev) static void addrconf_dev_config(struct net_device *dev)
{ {
struct in6_addr addr; struct in6_addr addr;
struct inet6_dev * idev; struct inet6_dev *idev;
ASSERT_RTNL(); ASSERT_RTNL();
@ -2472,7 +2468,7 @@ static void addrconf_ip6_tnl_config(struct net_device *dev)
} }
static int addrconf_notify(struct notifier_block *this, unsigned long event, static int addrconf_notify(struct notifier_block *this, unsigned long event,
void * data) void *data)
{ {
struct net_device *dev = (struct net_device *) data; struct net_device *dev = (struct net_device *) data;
struct inet6_dev *idev = __in6_dev_get(dev); struct inet6_dev *idev = __in6_dev_get(dev);
@ -3700,7 +3696,7 @@ static int inet6_dump_ifacaddr(struct sk_buff *skb, struct netlink_callback *cb)
return inet6_dump_addr(skb, cb, type); return inet6_dump_addr(skb, cb, type);
} }
static int inet6_rtm_getaddr(struct sk_buff *in_skb, struct nlmsghdr* nlh, static int inet6_rtm_getaddr(struct sk_buff *in_skb, struct nlmsghdr *nlh,
void *arg) void *arg)
{ {
struct net *net = sock_net(in_skb->sk); struct net *net = sock_net(in_skb->sk);

@ -866,6 +866,7 @@ static const nvset_t nvset_list[] = {
{ "ipv6_dhcpd", V_01 }, { "ipv6_dhcpd", V_01 },
{ "ipv6_lease_time", V_RANGE(1, 720) }, // 1 ... up to 720 hours (30 days) IPv6 lease time { "ipv6_lease_time", V_RANGE(1, 720) }, // 1 ... up to 720 hours (30 days) IPv6 lease time
{ "ipv6_accept_ra", V_NUM }, { "ipv6_accept_ra", V_NUM },
{ "ipv6_fast_ra", V_01 }, // fast RA option --> send frequent RAs
{ "ipv6_tun_addr", V_IPV6(1) }, { "ipv6_tun_addr", V_IPV6(1) },
{ "ipv6_tun_addrlen", V_RANGE(3, 127) }, { "ipv6_tun_addrlen", V_RANGE(3, 127) },
{ "ipv6_ifname", V_LENGTH(0, 8) }, { "ipv6_ifname", V_LENGTH(0, 8) },

@ -523,8 +523,11 @@ void start_dnsmasq()
ipv6_lease = 12; ipv6_lease = 12;
/* enable-ra should be enabled in both cases */ /* enable-ra should be enabled in both cases */
if ((nvram_get_int("ipv6_radvd")) || (nvram_get_int("ipv6_dhcpd"))) if ((nvram_get_int("ipv6_radvd")) || (nvram_get_int("ipv6_dhcpd"))) {
fprintf(f, "enable-ra\n"); fprintf(f, "enable-ra\n");
if (nvram_get_int("ipv6_fast_ra"))
fprintf(f, "ra-param=br*, 15, 600\n"); /* interface = br*, ra-interval = 15 sec, router-lifetime = 600 sec (10 min) */
}
/* only SLAAC and NO DHCPv6 */ /* only SLAAC and NO DHCPv6 */
if ((nvram_get_int("ipv6_radvd")) && (!nvram_get_int("ipv6_dhcpd"))) if ((nvram_get_int("ipv6_radvd")) && (!nvram_get_int("ipv6_dhcpd")))

@ -301,6 +301,7 @@ struct nvram_tuple router_defaults[] = {
{ "ipv6_dhcpd", "1" , 0 }, // Enable DHCPv6 { "ipv6_dhcpd", "1" , 0 }, // Enable DHCPv6
{ "ipv6_lease_time", "12" , 0 }, // DHCP IPv6 default lease time in hours { "ipv6_lease_time", "12" , 0 }, // DHCP IPv6 default lease time in hours
{ "ipv6_accept_ra", "1" , 0 }, // Enable Accept RA on WAN (bit 0) and/or LAN (bit 1) interfaces (br0...br3 if available) { "ipv6_accept_ra", "1" , 0 }, // Enable Accept RA on WAN (bit 0) and/or LAN (bit 1) interfaces (br0...br3 if available)
{ "ipv6_fast_ra", "0" , 0 }, // Enable fast RA option --> send frequent RAs
{ "ipv6_ifname", "six0" , 0 }, // The interface facing the rest of the IPv6 world { "ipv6_ifname", "six0" , 0 }, // The interface facing the rest of the IPv6 world
{ "ipv6_tun_v4end", "0.0.0.0" , 0 }, // Foreign IPv4 endpoint of SIT tunnel { "ipv6_tun_v4end", "0.0.0.0" , 0 }, // Foreign IPv4 endpoint of SIT tunnel
{ "ipv6_relay", "1" , 0 }, // Foreign IPv4 endpoint host of SIT tunnel 192.88.99.? { "ipv6_relay", "1" , 0 }, // Foreign IPv4 endpoint host of SIT tunnel 192.88.99.?

@ -18,7 +18,7 @@
<script> <script>
// <% nvram("dnsmasq_q,ipv6_radvd,ipv6_dhcpd,ipv6_lease_time,dhcpd_dmdns,dns_addget,dhcpd_gwmode,dns_intcpt,dhcpd_slt,dhcpc_minpkt,dnsmasq_custom,dnsmasq_onion_support,dhcpd_lmax,dhcpc_custom,dns_norebind,dns_priv_override,dhcpd_static_only,dnsmasq_debug,dnssec_enable,dnscrypt_proxy,dnscrypt_priority,dnscrypt_port,dnscrypt_resolver,dnscrypt_log,dnscrypt_manual,dnscrypt_provider_name,dnscrypt_provider_key,dnscrypt_resolver_address,dnscrypt_ephemeral_keys,stubby_proxy,stubby_priority,stubby_log,stubby_port,wan_wins"); %> // <% nvram("dnsmasq_q,ipv6_radvd,ipv6_dhcpd,ipv6_lease_time,ipv6_fast_ra,dhcpd_dmdns,dns_addget,dhcpd_gwmode,dns_intcpt,dhcpd_slt,dhcpc_minpkt,dnsmasq_custom,dnsmasq_onion_support,dhcpd_lmax,dhcpc_custom,dns_norebind,dns_priv_override,dhcpd_static_only,dnsmasq_debug,dnssec_enable,dnscrypt_proxy,dnscrypt_priority,dnscrypt_port,dnscrypt_resolver,dnscrypt_log,dnscrypt_manual,dnscrypt_provider_name,dnscrypt_provider_key,dnscrypt_resolver_address,dnscrypt_ephemeral_keys,stubby_proxy,stubby_priority,stubby_log,stubby_port,wan_wins"); %>
</script> </script>
<script src="isup.jsx?_http_id=<% nv(http_id); %>"></script> <script src="isup.jsx?_http_id=<% nv(http_id); %>"></script>
@ -194,6 +194,7 @@ function save() {
/* IPV6-BEGIN */ /* IPV6-BEGIN */
fom.ipv6_radvd.value = fom._f_ipv6_radvd.checked ? 1 : 0; fom.ipv6_radvd.value = fom._f_ipv6_radvd.checked ? 1 : 0;
fom.ipv6_dhcpd.value = fom._f_ipv6_dhcpd.checked ? 1 : 0; fom.ipv6_dhcpd.value = fom._f_ipv6_dhcpd.checked ? 1 : 0;
fom.ipv6_fast_ra.value = fom._f_ipv6_fast_ra.checked ? 1 : 0;
fom.ipv6_lease_time.value = fom._f_ipv6_lease_time.value; fom.ipv6_lease_time.value = fom._f_ipv6_lease_time.value;
/* IPV6-END */ /* IPV6-END */
fom.dnsmasq_q.value = 0; fom.dnsmasq_q.value = 0;
@ -305,6 +306,7 @@ function init() {
<!-- IPV6-BEGIN --> <!-- IPV6-BEGIN -->
<input type="hidden" name="ipv6_radvd"> <input type="hidden" name="ipv6_radvd">
<input type="hidden" name="ipv6_dhcpd"> <input type="hidden" name="ipv6_dhcpd">
<input type="hidden" name="ipv6_fast_ra">
<input type="hidden" name="ipv6_lease_time"> <input type="hidden" name="ipv6_lease_time">
<!-- IPV6-END --> <!-- IPV6-END -->
<input type="hidden" name="dnsmasq_q"> <input type="hidden" name="dnsmasq_q">
@ -425,6 +427,7 @@ function init() {
/* IPV6-BEGIN */ /* IPV6-BEGIN */
{ title: 'Announce IPv6 on LAN (SLAAC)', name: 'f_ipv6_radvd', type: 'checkbox', value: nvram.ipv6_radvd == '1' }, { title: 'Announce IPv6 on LAN (SLAAC)', name: 'f_ipv6_radvd', type: 'checkbox', value: nvram.ipv6_radvd == '1' },
{ title: 'Announce IPv6 on LAN (DHCP)', name: 'f_ipv6_dhcpd', type: 'checkbox', value: nvram.ipv6_dhcpd == '1' }, { title: 'Announce IPv6 on LAN (DHCP)', name: 'f_ipv6_dhcpd', type: 'checkbox', value: nvram.ipv6_dhcpd == '1' },
{ title: 'Fast RA mode', name: 'f_ipv6_fast_ra', type: 'checkbox', value: nvram.ipv6_fast_ra == '1' },
{ title: 'DHCP IPv6 lease time', name: 'f_ipv6_lease_time', type: 'text', maxlen: 3, size: 8, suffix: ' <small> (in hours)<\/small>', value: nvram.ipv6_lease_time || 12 }, { title: 'DHCP IPv6 lease time', name: 'f_ipv6_lease_time', type: 'text', maxlen: 3, size: 8, suffix: ' <small> (in hours)<\/small>', value: nvram.ipv6_lease_time || 12 },
/* IPV6-END */ /* IPV6-END */
{ title: 'Mute dhcpv4 logging', name: 'f_dnsmasq_q4', type: 'checkbox', value: (nvram.dnsmasq_q & 1) }, { title: 'Mute dhcpv4 logging', name: 'f_dnsmasq_q4', type: 'checkbox', value: (nvram.dnsmasq_q & 1) },
@ -468,6 +471,9 @@ function init() {
<li><b>Use user-entered gateway if WAN is disabled</b> - DHCP will use the IP address of the router as the default gateway on each LAN.</li> <li><b>Use user-entered gateway if WAN is disabled</b> - DHCP will use the IP address of the router as the default gateway on each LAN.</li>
<li><b>Ignore DHCP requests (...)</b> - Dnsmasq will ignore DHCP requests to only MAC addresses listed on the <a href="basic-static.asp">Static DHCP/ARP</a> page won't be able to obtain an IP address through DHCP.</li> <li><b>Ignore DHCP requests (...)</b> - Dnsmasq will ignore DHCP requests to only MAC addresses listed on the <a href="basic-static.asp">Static DHCP/ARP</a> page won't be able to obtain an IP address through DHCP.</li>
<li><b>Static lease time</b> - Absolute maximum amount of time allowed for any DHCP lease to be valid.</li> <li><b>Static lease time</b> - Absolute maximum amount of time allowed for any DHCP lease to be valid.</li>
<!-- IPV6-BEGIN -->
<li><b>Fast RA mode</b> - Forces dnsmasq to be always in frequent RA mode. (Recommendation: enable also "Mute RA logging" option)</li>
<!-- IPV6-END -->
<li><b>Custom configuration</b> - Extra options to be added to the Dnsmasq configuration file.</li> <li><b>Custom configuration</b> - Extra options to be added to the Dnsmasq configuration file.</li>
</ul> </ul>
<br> <br>

Loading…
Cancel
Save