Commit b0d19a37 authored by Linus Torvalds's avatar Linus Torvalds

Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6

* git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-2.6:
  iwlwifi: Fix built-in compilation of iwlcore
  net: Unexport move_addr_to_{kernel,user}
  rt2x00: Select LEDS_CLASS.
  iwlwifi: Select LEDS_CLASS.
  leds: Do not guard NEW_LEDS with HAS_IOMEM
  [IPSEC]: Fix catch-22 with algorithm IDs above 31
  time: Export set_normalized_timespec.
  tcp: Make use of before macro in tcp_input.c
  hamradio: Remove unneeded and deprecated cli()/sti() calls in dmascc.c
  [NETNS]: Remove empty ->init callback.
  [DCCP]: Convert do_gettimeofday() to getnstimeofday().
  [NETNS]: Don't initialize err variable twice.
  [NETNS]: The ip6_fib_timer can work with garbage on net namespace stop.
  [IPV4]: Convert do_gettimeofday() to getnstimeofday().
  [IPV4]: Make icmp_sk_init() static.
  [IPV6]: Make struct ip6_prohibit_entry_template static.
  tcp: Trivial fix to correct function name in a comment in net/ipv4/tcp.c
  [NET]: Expose netdevice dev_id through sysfs
  skbuff: fix missing kernel-doc notation
  [ROSE]: Fix soft lockup wrt. rose_node_list_lock
parents 0093cb11 d7d31300
menuconfig NEW_LEDS menuconfig NEW_LEDS
bool "LED Support" bool "LED Support"
depends on HAS_IOMEM
help help
Say Y to enable Linux LED support. This allows control of supported Say Y to enable Linux LED support. This allows control of supported
LEDs from both userspace and optionally, by kernel events (triggers). LEDs from both userspace and optionally, by kernel events (triggers).
......
...@@ -1083,15 +1083,12 @@ static void start_timer(struct scc_priv *priv, int t, int r15) ...@@ -1083,15 +1083,12 @@ static void start_timer(struct scc_priv *priv, int t, int r15)
if (t == 0) { if (t == 0) {
tm_isr(priv); tm_isr(priv);
} else if (t > 0) { } else if (t > 0) {
save_flags(flags);
cli();
outb(t & 0xFF, priv->tmr_cnt); outb(t & 0xFF, priv->tmr_cnt);
outb((t >> 8) & 0xFF, priv->tmr_cnt); outb((t >> 8) & 0xFF, priv->tmr_cnt);
if (priv->type != TYPE_TWIN) { if (priv->type != TYPE_TWIN) {
write_scc(priv, R15, r15 | CTSIE); write_scc(priv, R15, r15 | CTSIE);
priv->rr0 |= CTS; priv->rr0 |= CTS;
} }
restore_flags(flags);
} }
} }
......
...@@ -49,7 +49,9 @@ config IWL4965_HT ...@@ -49,7 +49,9 @@ config IWL4965_HT
config IWL4965_LEDS config IWL4965_LEDS
bool "Enable LEDS features in iwl4965 driver" bool "Enable LEDS features in iwl4965 driver"
depends on IWL4965 && MAC80211_LEDS && LEDS_CLASS depends on IWL4965
select MAC80211_LEDS
select LEDS_CLASS
select IWLWIFI_LEDS select IWLWIFI_LEDS
---help--- ---help---
This option enables LEDS for the iwlwifi drivers This option enables LEDS for the iwlwifi drivers
...@@ -134,7 +136,9 @@ config IWL3945_SPECTRUM_MEASUREMENT ...@@ -134,7 +136,9 @@ config IWL3945_SPECTRUM_MEASUREMENT
config IWL3945_LEDS config IWL3945_LEDS
bool "Enable LEDS features in iwl3945 driver" bool "Enable LEDS features in iwl3945 driver"
depends on IWL3945 && MAC80211_LEDS && LEDS_CLASS depends on IWL3945
select MAC80211_LEDS
select LEDS_CLASS
---help--- ---help---
This option enables LEDS for the iwl3945 driver. This option enables LEDS for the iwl3945 driver.
......
obj-$(CONFIG_IWLCORE) := iwlcore.o obj-$(CONFIG_IWLCORE) += iwlcore.o
iwlcore-objs := iwl-core.o iwl-eeprom.o iwl-hcmd.o iwlcore-objs := iwl-core.o iwl-eeprom.o iwl-hcmd.o
iwlcore-$(CONFIG_IWLWIFI_DEBUGFS) += iwl-debugfs.o iwlcore-$(CONFIG_IWLWIFI_DEBUGFS) += iwl-debugfs.o
iwlcore-$(CONFIG_IWLWIFI_LEDS) += iwl-led.o iwlcore-$(CONFIG_IWLWIFI_LEDS) += iwl-led.o
......
...@@ -60,7 +60,8 @@ config RT2400PCI_RFKILL ...@@ -60,7 +60,8 @@ config RT2400PCI_RFKILL
config RT2400PCI_LEDS config RT2400PCI_LEDS
bool "RT2400 leds support" bool "RT2400 leds support"
depends on RT2400PCI && LEDS_CLASS depends on RT2400PCI
select LEDS_CLASS
select RT2X00_LIB_LEDS select RT2X00_LIB_LEDS
---help--- ---help---
This adds support for led triggers provided my mac80211. This adds support for led triggers provided my mac80211.
...@@ -86,7 +87,8 @@ config RT2500PCI_RFKILL ...@@ -86,7 +87,8 @@ config RT2500PCI_RFKILL
config RT2500PCI_LEDS config RT2500PCI_LEDS
bool "RT2500 leds support" bool "RT2500 leds support"
depends on RT2500PCI && LEDS_CLASS depends on RT2500PCI
select LEDS_CLASS
select RT2X00_LIB_LEDS select RT2X00_LIB_LEDS
---help--- ---help---
This adds support for led triggers provided my mac80211. This adds support for led triggers provided my mac80211.
...@@ -114,7 +116,8 @@ config RT61PCI_RFKILL ...@@ -114,7 +116,8 @@ config RT61PCI_RFKILL
config RT61PCI_LEDS config RT61PCI_LEDS
bool "RT61 leds support" bool "RT61 leds support"
depends on RT61PCI && LEDS_CLASS depends on RT61PCI
select LEDS_CLASS
select RT2X00_LIB_LEDS select RT2X00_LIB_LEDS
---help--- ---help---
This adds support for led triggers provided my mac80211. This adds support for led triggers provided my mac80211.
...@@ -130,7 +133,8 @@ config RT2500USB ...@@ -130,7 +133,8 @@ config RT2500USB
config RT2500USB_LEDS config RT2500USB_LEDS
bool "RT2500 leds support" bool "RT2500 leds support"
depends on RT2500USB && LEDS_CLASS depends on RT2500USB
select LEDS_CLASS
select RT2X00_LIB_LEDS select RT2X00_LIB_LEDS
---help--- ---help---
This adds support for led triggers provided my mac80211. This adds support for led triggers provided my mac80211.
...@@ -148,7 +152,8 @@ config RT73USB ...@@ -148,7 +152,8 @@ config RT73USB
config RT73USB_LEDS config RT73USB_LEDS
bool "RT73 leds support" bool "RT73 leds support"
depends on RT73USB && LEDS_CLASS depends on RT73USB
select LEDS_CLASS
select RT2X00_LIB_LEDS select RT2X00_LIB_LEDS
---help--- ---help---
This adds support for led triggers provided my mac80211. This adds support for led triggers provided my mac80211.
......
...@@ -436,6 +436,9 @@ struct xfrm_tmpl ...@@ -436,6 +436,9 @@ struct xfrm_tmpl
/* May skip this transfomration if no SA is found */ /* May skip this transfomration if no SA is found */
__u8 optional; __u8 optional;
/* Skip aalgos/ealgos/calgos checks. */
__u8 allalgs;
/* Bit mask of algos allowed for acquisition */ /* Bit mask of algos allowed for acquisition */
__u32 aalgos; __u32 aalgos;
__u32 ealgos; __u32 ealgos;
......
...@@ -379,6 +379,7 @@ void set_normalized_timespec(struct timespec *ts, time_t sec, long nsec) ...@@ -379,6 +379,7 @@ void set_normalized_timespec(struct timespec *ts, time_t sec, long nsec)
ts->tv_sec = sec; ts->tv_sec = sec;
ts->tv_nsec = nsec; ts->tv_nsec = nsec;
} }
EXPORT_SYMBOL(set_normalized_timespec);
/** /**
* ns_to_timespec - Convert nanoseconds to timespec * ns_to_timespec - Convert nanoseconds to timespec
......
...@@ -87,6 +87,7 @@ static ssize_t netdev_store(struct device *dev, struct device_attribute *attr, ...@@ -87,6 +87,7 @@ static ssize_t netdev_store(struct device *dev, struct device_attribute *attr,
return ret; return ret;
} }
NETDEVICE_SHOW(dev_id, fmt_hex);
NETDEVICE_SHOW(addr_len, fmt_dec); NETDEVICE_SHOW(addr_len, fmt_dec);
NETDEVICE_SHOW(iflink, fmt_dec); NETDEVICE_SHOW(iflink, fmt_dec);
NETDEVICE_SHOW(ifindex, fmt_dec); NETDEVICE_SHOW(ifindex, fmt_dec);
...@@ -210,6 +211,7 @@ static ssize_t store_tx_queue_len(struct device *dev, ...@@ -210,6 +211,7 @@ static ssize_t store_tx_queue_len(struct device *dev,
static struct device_attribute net_class_attributes[] = { static struct device_attribute net_class_attributes[] = {
__ATTR(addr_len, S_IRUGO, show_addr_len, NULL), __ATTR(addr_len, S_IRUGO, show_addr_len, NULL),
__ATTR(dev_id, S_IRUGO, show_dev_id, NULL),
__ATTR(iflink, S_IRUGO, show_iflink, NULL), __ATTR(iflink, S_IRUGO, show_iflink, NULL),
__ATTR(ifindex, S_IRUGO, show_ifindex, NULL), __ATTR(ifindex, S_IRUGO, show_ifindex, NULL),
__ATTR(features, S_IRUGO, show_features, NULL), __ATTR(features, S_IRUGO, show_features, NULL),
......
...@@ -46,29 +46,24 @@ struct { ...@@ -46,29 +46,24 @@ struct {
struct kfifo *fifo; struct kfifo *fifo;
spinlock_t lock; spinlock_t lock;
wait_queue_head_t wait; wait_queue_head_t wait;
struct timeval tstart; struct timespec tstart;
} dccpw; } dccpw;
static void printl(const char *fmt, ...) static void printl(const char *fmt, ...)
{ {
va_list args; va_list args;
int len; int len;
struct timeval now; struct timespec now;
char tbuf[256]; char tbuf[256];
va_start(args, fmt); va_start(args, fmt);
do_gettimeofday(&now); getnstimeofday(&now);
now.tv_sec -= dccpw.tstart.tv_sec; now = timespec_sub(now, dccpw.tstart);
now.tv_usec -= dccpw.tstart.tv_usec;
if (now.tv_usec < 0) {
--now.tv_sec;
now.tv_usec += 1000000;
}
len = sprintf(tbuf, "%lu.%06lu ", len = sprintf(tbuf, "%lu.%06lu ",
(unsigned long) now.tv_sec, (unsigned long) now.tv_sec,
(unsigned long) now.tv_usec); (unsigned long) now.tv_nsec / NSEC_PER_USEC);
len += vscnprintf(tbuf+len, sizeof(tbuf)-len, fmt, args); len += vscnprintf(tbuf+len, sizeof(tbuf)-len, fmt, args);
va_end(args); va_end(args);
...@@ -119,7 +114,7 @@ static struct jprobe dccp_send_probe = { ...@@ -119,7 +114,7 @@ static struct jprobe dccp_send_probe = {
static int dccpprobe_open(struct inode *inode, struct file *file) static int dccpprobe_open(struct inode *inode, struct file *file)
{ {
kfifo_reset(dccpw.fifo); kfifo_reset(dccpw.fifo);
do_gettimeofday(&dccpw.tstart); getnstimeofday(&dccpw.tstart);
return 0; return 0;
} }
......
...@@ -847,7 +847,7 @@ static void icmp_echo(struct sk_buff *skb) ...@@ -847,7 +847,7 @@ static void icmp_echo(struct sk_buff *skb)
*/ */
static void icmp_timestamp(struct sk_buff *skb) static void icmp_timestamp(struct sk_buff *skb)
{ {
struct timeval tv; struct timespec tv;
struct icmp_bxm icmp_param; struct icmp_bxm icmp_param;
/* /*
* Too short. * Too short.
...@@ -858,9 +858,9 @@ static void icmp_timestamp(struct sk_buff *skb) ...@@ -858,9 +858,9 @@ static void icmp_timestamp(struct sk_buff *skb)
/* /*
* Fill in the current time as ms since midnight UT: * Fill in the current time as ms since midnight UT:
*/ */
do_gettimeofday(&tv); getnstimeofday(&tv);
icmp_param.data.times[1] = htonl((tv.tv_sec % 86400) * 1000 + icmp_param.data.times[1] = htonl((tv.tv_sec % 86400) * MSEC_PER_SEC +
tv.tv_usec / 1000); tv.tv_nsec / NSEC_PER_MSEC);
icmp_param.data.times[2] = icmp_param.data.times[1]; icmp_param.data.times[2] = icmp_param.data.times[1];
if (skb_copy_bits(skb, 0, &icmp_param.data.times[0], 4)) if (skb_copy_bits(skb, 0, &icmp_param.data.times[0], 4))
BUG(); BUG();
...@@ -1144,7 +1144,7 @@ static void __net_exit icmp_sk_exit(struct net *net) ...@@ -1144,7 +1144,7 @@ static void __net_exit icmp_sk_exit(struct net *net)
net->ipv4.icmp_sk = NULL; net->ipv4.icmp_sk = NULL;
} }
int __net_init icmp_sk_init(struct net *net) static int __net_init icmp_sk_init(struct net *net)
{ {
int i, err; int i, err;
......
...@@ -55,10 +55,10 @@ void ip_options_build(struct sk_buff * skb, struct ip_options * opt, ...@@ -55,10 +55,10 @@ void ip_options_build(struct sk_buff * skb, struct ip_options * opt,
if (opt->ts_needaddr) if (opt->ts_needaddr)
ip_rt_get_source(iph+opt->ts+iph[opt->ts+2]-9, rt); ip_rt_get_source(iph+opt->ts+iph[opt->ts+2]-9, rt);
if (opt->ts_needtime) { if (opt->ts_needtime) {
struct timeval tv; struct timespec tv;
__be32 midtime; __be32 midtime;
do_gettimeofday(&tv); getnstimeofday(&tv);
midtime = htonl((tv.tv_sec % 86400) * 1000 + tv.tv_usec / 1000); midtime = htonl((tv.tv_sec % 86400) * MSEC_PER_SEC + tv.tv_nsec / NSEC_PER_MSEC);
memcpy(iph+opt->ts+iph[opt->ts+2]-5, &midtime, 4); memcpy(iph+opt->ts+iph[opt->ts+2]-5, &midtime, 4);
} }
return; return;
...@@ -406,10 +406,10 @@ int ip_options_compile(struct net *net, ...@@ -406,10 +406,10 @@ int ip_options_compile(struct net *net,
break; break;
} }
if (timeptr) { if (timeptr) {
struct timeval tv; struct timespec tv;
__be32 midtime; __be32 midtime;
do_gettimeofday(&tv); getnstimeofday(&tv);
midtime = htonl((tv.tv_sec % 86400) * 1000 + tv.tv_usec / 1000); midtime = htonl((tv.tv_sec % 86400) * MSEC_PER_SEC + tv.tv_nsec / NSEC_PER_MSEC);
memcpy(timeptr, &midtime, sizeof(__be32)); memcpy(timeptr, &midtime, sizeof(__be32));
opt->is_changed = 1; opt->is_changed = 1;
} }
......
...@@ -1722,7 +1722,7 @@ static int tcp_close_state(struct sock *sk) ...@@ -1722,7 +1722,7 @@ static int tcp_close_state(struct sock *sk)
/* /*
* Shutdown the sending side of a connection. Much like close except * Shutdown the sending side of a connection. Much like close except
* that we don't receive shut down or set_sock_flag(sk, SOCK_DEAD). * that we don't receive shut down or sock_set_flag(sk, SOCK_DEAD).
*/ */
void tcp_shutdown(struct sock *sk, int how) void tcp_shutdown(struct sock *sk, int how)
......
...@@ -2298,7 +2298,7 @@ static inline int tcp_packet_delayed(struct tcp_sock *tp) ...@@ -2298,7 +2298,7 @@ static inline int tcp_packet_delayed(struct tcp_sock *tp)
{ {
return !tp->retrans_stamp || return !tp->retrans_stamp ||
(tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr && (tp->rx_opt.saw_tstamp && tp->rx_opt.rcv_tsecr &&
(__s32)(tp->rx_opt.rcv_tsecr - tp->retrans_stamp) < 0); before(tp->rx_opt.rcv_tsecr, tp->retrans_stamp));
} }
/* Undo procedures. */ /* Undo procedures. */
......
...@@ -4338,12 +4338,6 @@ int unregister_inet6addr_notifier(struct notifier_block *nb) ...@@ -4338,12 +4338,6 @@ int unregister_inet6addr_notifier(struct notifier_block *nb)
EXPORT_SYMBOL(unregister_inet6addr_notifier); EXPORT_SYMBOL(unregister_inet6addr_notifier);
static int addrconf_net_init(struct net *net)
{
return 0;
}
static void addrconf_net_exit(struct net *net) static void addrconf_net_exit(struct net *net)
{ {
struct net_device *dev; struct net_device *dev;
...@@ -4360,7 +4354,6 @@ static void addrconf_net_exit(struct net *net) ...@@ -4360,7 +4354,6 @@ static void addrconf_net_exit(struct net *net)
} }
static struct pernet_operations addrconf_net_ops = { static struct pernet_operations addrconf_net_ops = {
.init = addrconf_net_init,
.exit = addrconf_net_exit, .exit = addrconf_net_exit,
}; };
......
...@@ -1543,7 +1543,7 @@ static int fib6_net_init(struct net *net) ...@@ -1543,7 +1543,7 @@ static int fib6_net_init(struct net *net)
static void fib6_net_exit(struct net *net) static void fib6_net_exit(struct net *net)
{ {
rt6_ifdown(net, NULL); rt6_ifdown(net, NULL);
del_timer(net->ipv6.ip6_fib_timer); del_timer_sync(net->ipv6.ip6_fib_timer);
kfree(net->ipv6.ip6_fib_timer); kfree(net->ipv6.ip6_fib_timer);
#ifdef CONFIG_IPV6_MULTIPLE_TABLES #ifdef CONFIG_IPV6_MULTIPLE_TABLES
kfree(net->ipv6.fib6_local_tbl); kfree(net->ipv6.fib6_local_tbl);
......
...@@ -150,7 +150,7 @@ static struct rt6_info ip6_null_entry_template = { ...@@ -150,7 +150,7 @@ static struct rt6_info ip6_null_entry_template = {
static int ip6_pkt_prohibit(struct sk_buff *skb); static int ip6_pkt_prohibit(struct sk_buff *skb);
static int ip6_pkt_prohibit_out(struct sk_buff *skb); static int ip6_pkt_prohibit_out(struct sk_buff *skb);
struct rt6_info ip6_prohibit_entry_template = { static struct rt6_info ip6_prohibit_entry_template = {
.u = { .u = {
.dst = { .dst = {
.__refcnt = ATOMIC_INIT(1), .__refcnt = ATOMIC_INIT(1),
...@@ -2614,9 +2614,8 @@ struct ctl_table *ipv6_route_sysctl_init(struct net *net) ...@@ -2614,9 +2614,8 @@ struct ctl_table *ipv6_route_sysctl_init(struct net *net)
static int ip6_route_net_init(struct net *net) static int ip6_route_net_init(struct net *net)
{ {
int ret = 0; int ret = -ENOMEM;
ret = -ENOMEM;
net->ipv6.ip6_dst_ops = kmemdup(&ip6_dst_ops_template, net->ipv6.ip6_dst_ops = kmemdup(&ip6_dst_ops_template,
sizeof(*net->ipv6.ip6_dst_ops), sizeof(*net->ipv6.ip6_dst_ops),
GFP_KERNEL); GFP_KERNEL);
......
...@@ -1907,7 +1907,7 @@ parse_ipsecrequest(struct xfrm_policy *xp, struct sadb_x_ipsecrequest *rq) ...@@ -1907,7 +1907,7 @@ parse_ipsecrequest(struct xfrm_policy *xp, struct sadb_x_ipsecrequest *rq)
t->encap_family = xp->family; t->encap_family = xp->family;
/* No way to set this via kame pfkey */ /* No way to set this via kame pfkey */
t->aalgos = t->ealgos = t->calgos = ~0; t->allalgs = 1;
xp->xfrm_nr++; xp->xfrm_nr++;
return 0; return 0;
} }
......
...@@ -857,7 +857,6 @@ int rose_route_frame(struct sk_buff *skb, ax25_cb *ax25) ...@@ -857,7 +857,6 @@ int rose_route_frame(struct sk_buff *skb, ax25_cb *ax25)
src_addr = (rose_address *)(skb->data + 9); src_addr = (rose_address *)(skb->data + 9);
dest_addr = (rose_address *)(skb->data + 4); dest_addr = (rose_address *)(skb->data + 4);
spin_lock_bh(&rose_node_list_lock);
spin_lock_bh(&rose_neigh_list_lock); spin_lock_bh(&rose_neigh_list_lock);
spin_lock_bh(&rose_route_list_lock); spin_lock_bh(&rose_route_list_lock);
...@@ -1060,7 +1059,6 @@ int rose_route_frame(struct sk_buff *skb, ax25_cb *ax25) ...@@ -1060,7 +1059,6 @@ int rose_route_frame(struct sk_buff *skb, ax25_cb *ax25)
out: out:
spin_unlock_bh(&rose_route_list_lock); spin_unlock_bh(&rose_route_list_lock);
spin_unlock_bh(&rose_neigh_list_lock); spin_unlock_bh(&rose_neigh_list_lock);
spin_unlock_bh(&rose_node_list_lock);
return res; return res;
} }
......
...@@ -2327,9 +2327,6 @@ int kernel_sock_shutdown(struct socket *sock, enum sock_shutdown_cmd how) ...@@ -2327,9 +2327,6 @@ int kernel_sock_shutdown(struct socket *sock, enum sock_shutdown_cmd how)
return sock->ops->shutdown(sock, how); return sock->ops->shutdown(sock, how);
} }
/* ABI emulation layers need these two */
EXPORT_SYMBOL(move_addr_to_kernel);
EXPORT_SYMBOL(move_addr_to_user);
EXPORT_SYMBOL(sock_create); EXPORT_SYMBOL(sock_create);
EXPORT_SYMBOL(sock_create_kern); EXPORT_SYMBOL(sock_create_kern);
EXPORT_SYMBOL(sock_create_lite); EXPORT_SYMBOL(sock_create_lite);
......
...@@ -1819,7 +1819,7 @@ xfrm_state_ok(struct xfrm_tmpl *tmpl, struct xfrm_state *x, ...@@ -1819,7 +1819,7 @@ xfrm_state_ok(struct xfrm_tmpl *tmpl, struct xfrm_state *x,
(x->id.spi == tmpl->id.spi || !tmpl->id.spi) && (x->id.spi == tmpl->id.spi || !tmpl->id.spi) &&
(x->props.reqid == tmpl->reqid || !tmpl->reqid) && (x->props.reqid == tmpl->reqid || !tmpl->reqid) &&
x->props.mode == tmpl->mode && x->props.mode == tmpl->mode &&
((tmpl->aalgos & (1<<x->props.aalgo)) || (tmpl->allalgs || (tmpl->aalgos & (1<<x->props.aalgo)) ||
!(xfrm_id_proto_match(tmpl->id.proto, IPSEC_PROTO_ANY))) && !(xfrm_id_proto_match(tmpl->id.proto, IPSEC_PROTO_ANY))) &&
!(x->props.mode != XFRM_MODE_TRANSPORT && !(x->props.mode != XFRM_MODE_TRANSPORT &&
xfrm_state_addr_cmp(tmpl, x, family)); xfrm_state_addr_cmp(tmpl, x, family));
......
...@@ -981,6 +981,8 @@ static void copy_templates(struct xfrm_policy *xp, struct xfrm_user_tmpl *ut, ...@@ -981,6 +981,8 @@ static void copy_templates(struct xfrm_policy *xp, struct xfrm_user_tmpl *ut,
t->aalgos = ut->aalgos; t->aalgos = ut->aalgos;
t->ealgos = ut->ealgos; t->ealgos = ut->ealgos;
t->calgos = ut->calgos; t->calgos = ut->calgos;
/* If all masks are ~0, then we allow all algorithms. */
t->allalgs = !~(t->aalgos & t->ealgos & t->calgos);
t->encap_family = ut->family; t->encap_family = ut->family;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment