Orange Pi5 kernel

Deprecated Linux kernel 5.10.110 for OrangePi 5/5B/5+ boards

3 Commits   0 Branches   0 Tags   |
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  1) // SPDX-License-Identifier: GPL-2.0-or-later
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  2) /* Utility routines
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  3)  *
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  4)  * Copyright (C) 2015 Red Hat, Inc. All Rights Reserved.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  5)  * Written by David Howells (dhowells@redhat.com)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  6)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  7) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  8) #include <linux/ip.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300  9) #include <linux/ipv6.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 10) #include <linux/udp.h>
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 11) #include "ar-internal.h"
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 12) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 13) /*
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 14)  * Fill out a peer address from a socket buffer containing a packet.
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 15)  */
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 16) int rxrpc_extract_addr_from_skb(struct sockaddr_rxrpc *srx, struct sk_buff *skb)
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 17) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 18) 	memset(srx, 0, sizeof(*srx));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 19) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 20) 	switch (ntohs(skb->protocol)) {
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 21) 	case ETH_P_IP:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 22) 		srx->transport_type = SOCK_DGRAM;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 23) 		srx->transport_len = sizeof(srx->transport.sin);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 24) 		srx->transport.sin.sin_family = AF_INET;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 25) 		srx->transport.sin.sin_port = udp_hdr(skb)->source;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 26) 		srx->transport.sin.sin_addr.s_addr = ip_hdr(skb)->saddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 27) 		return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 28) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 29) #ifdef CONFIG_AF_RXRPC_IPV6
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 30) 	case ETH_P_IPV6:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 31) 		srx->transport_type = SOCK_DGRAM;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 32) 		srx->transport_len = sizeof(srx->transport.sin6);
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 33) 		srx->transport.sin6.sin6_family = AF_INET6;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 34) 		srx->transport.sin6.sin6_port = udp_hdr(skb)->source;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 35) 		srx->transport.sin6.sin6_addr = ipv6_hdr(skb)->saddr;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 36) 		return 0;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 37) #endif
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 38) 
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 39) 	default:
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 40) 		pr_warn_ratelimited("AF_RXRPC: Unknown eth protocol %u\n",
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 41) 				    ntohs(skb->protocol));
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 42) 		return -EAFNOSUPPORT;
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 43) 	}
^8f3ce5b39 (kx 2023-10-28 12:00:06 +0300 44) }