rxrpc: Provide a way for AFS to ask for the peer address of a call
Provide a function so that kernel users, such as AFS, can ask for the peer address of a call: void rxrpc_kernel_get_peer(struct rxrpc_call *call, struct sockaddr_rxrpc *_srx); In the future the kernel service won't get sk_buffs to look inside. Further, this allows us to hide any canonicalisation inside AF_RXRPC for when IPv6 support is added. Also propagate this through to afs_find_server() and issue a warning if we can't handle the address family yet. Signed-off-by: David Howells <dhowells@redhat.com>
This commit is contained in:
@@ -178,13 +178,18 @@ server_in_two_cells:
|
||||
/*
|
||||
* look up a server by its IP address
|
||||
*/
|
||||
struct afs_server *afs_find_server(const struct in_addr *_addr)
|
||||
struct afs_server *afs_find_server(const struct sockaddr_rxrpc *srx)
|
||||
{
|
||||
struct afs_server *server = NULL;
|
||||
struct rb_node *p;
|
||||
struct in_addr addr = *_addr;
|
||||
struct in_addr addr = srx->transport.sin.sin_addr;
|
||||
|
||||
_enter("%pI4", &addr.s_addr);
|
||||
_enter("{%d,%pI4}", srx->transport.family, &addr.s_addr);
|
||||
|
||||
if (srx->transport.family != AF_INET) {
|
||||
WARN(true, "AFS does not yes support non-IPv4 addresses\n");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
read_lock(&afs_servers_lock);
|
||||
|
||||
|
Reference in New Issue
Block a user