#include "protocol_yfs.h"
static unsigned afs_server_gc_delay = 10;
static unsigned afs_server_update_delay = 30;
static void afs_inc_servers_outstanding(struct afs_net *net)
atomic_inc(&net->servers_outstanding);
static void afs_dec_servers_outstanding(struct afs_net *net)
if (atomic_dec_and_test(&net->servers_outstanding))
wake_up_var(&net->servers_outstanding);
struct afs_server *afs_find_server(struct afs_net *net,
const struct sockaddr_rxrpc *srx)
const struct sockaddr_in6 *a = &srx->transport.sin6, *b;
const struct afs_addr_list *alist;
struct afs_server *server = NULL;
if (srx->transport.sin6.sin6_addr.s6_addr32[0] == 0 ||
srx->transport.sin6.sin6_addr.s6_addr32[1] == 0 ||
srx->transport.sin6.sin6_addr.s6_addr32[2] == htonl(0xffff))
afs_put_server(net, server);
read_seqbegin_or_lock(&net->fs_addr_lock, &seq);
hlist_for_each_entry_rcu(server, &net->fs_addresses6, addr6_link) {
alist = rcu_dereference(server->addresses);
for (i = alist->nr_ipv4; i < alist->nr_addrs; i++) {
b = &alist->addrs[i].transport.sin6;
diff = ((u16 __force)a->sin6_port -