mirror of
https://gitee.com/bianbu-linux/linux-6.6
synced 2025-04-24 14:07:52 -04:00
rxrpc: Move peer lookup from call-accept to new-incoming-conn
Move the lookup of a peer from a call that's being accepted into the function that creates a new incoming connection. This will allow us to avoid incrementing the peer's usage count in some cases in future. Note that I haven't bother to integrate rxrpc_get_addr_from_skb() with rxrpc_extract_addr_from_skb() as I'm going to delete the former in the very near future. Signed-off-by: David Howells <dhowells@redhat.com>
This commit is contained in:
parent
7877a4a4bd
commit
d991b4a32f
4 changed files with 51 additions and 26 deletions
|
@ -10,6 +10,7 @@
|
|||
*/
|
||||
|
||||
#include <linux/ip.h>
|
||||
#include <linux/ipv6.h>
|
||||
#include <linux/udp.h>
|
||||
#include "ar-internal.h"
|
||||
|
||||
|
@ -39,3 +40,34 @@ void rxrpc_get_addr_from_skb(struct rxrpc_local *local,
|
|||
BUG();
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Fill out a peer address from a socket buffer containing a packet.
|
||||
*/
|
||||
int rxrpc_extract_addr_from_skb(struct sockaddr_rxrpc *srx, struct sk_buff *skb)
|
||||
{
|
||||
memset(srx, 0, sizeof(*srx));
|
||||
|
||||
switch (ntohs(skb->protocol)) {
|
||||
case ETH_P_IP:
|
||||
srx->transport_type = SOCK_DGRAM;
|
||||
srx->transport_len = sizeof(srx->transport.sin);
|
||||
srx->transport.sin.sin_family = AF_INET;
|
||||
srx->transport.sin.sin_port = udp_hdr(skb)->source;
|
||||
srx->transport.sin.sin_addr.s_addr = ip_hdr(skb)->saddr;
|
||||
return 0;
|
||||
|
||||
case ETH_P_IPV6:
|
||||
srx->transport_type = SOCK_DGRAM;
|
||||
srx->transport_len = sizeof(srx->transport.sin6);
|
||||
srx->transport.sin6.sin6_family = AF_INET6;
|
||||
srx->transport.sin6.sin6_port = udp_hdr(skb)->source;
|
||||
srx->transport.sin6.sin6_addr = ipv6_hdr(skb)->saddr;
|
||||
return 0;
|
||||
|
||||
default:
|
||||
pr_warn_ratelimited("AF_RXRPC: Unknown eth protocol %u\n",
|
||||
ntohs(skb->protocol));
|
||||
return -EAFNOSUPPORT;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue