summaryrefslogtreecommitdiffstats
path: root/net/sctp/protocol.c
diff options
context:
space:
mode:
authorMarcelo Ricardo Leitner <marcelo.leitner@gmail.com>2016-12-28 12:26:33 +0100
committerDavid S. Miller <davem@davemloft.net>2016-12-28 20:06:31 +0100
commit0630c56e40b0bcca299d3b4c20ffcfddbe6a0218 (patch)
treee64b6bbd854d3f08b948572bf44b7932caf82e6a /net/sctp/protocol.c
parentsctp: reduce indent level in sctp_sf_shut_8_4_5 (diff)
downloadlinux-0630c56e40b0bcca299d3b4c20ffcfddbe6a0218.tar.xz
linux-0630c56e40b0bcca299d3b4c20ffcfddbe6a0218.zip
sctp: simplify addr copy
Make it a bit easier to read. Signed-off-by: Marcelo Ricardo Leitner <marcelo.leitner@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/protocol.c')
-rw-r--r--net/sctp/protocol.c18
1 files changed, 7 insertions, 11 deletions
diff --git a/net/sctp/protocol.c b/net/sctp/protocol.c
index 616a9428e0c4..f9c3c37c9ae0 100644
--- a/net/sctp/protocol.c
+++ b/net/sctp/protocol.c
@@ -237,23 +237,19 @@ int sctp_copy_local_addr_list(struct net *net, struct sctp_bind_addr *bp,
static void sctp_v4_from_skb(union sctp_addr *addr, struct sk_buff *skb,
int is_saddr)
{
- void *from;
- __be16 *port;
- struct sctphdr *sh;
+ /* Always called on head skb, so this is safe */
+ struct sctphdr *sh = sctp_hdr(skb);
+ struct sockaddr_in *sa = &addr->v4;
- port = &addr->v4.sin_port;
addr->v4.sin_family = AF_INET;
- /* Always called on head skb, so this is safe */
- sh = sctp_hdr(skb);
if (is_saddr) {
- *port = sh->source;
- from = &ip_hdr(skb)->saddr;
+ sa->sin_port = sh->source;
+ sa->sin_addr.s_addr = ip_hdr(skb)->saddr;
} else {
- *port = sh->dest;
- from = &ip_hdr(skb)->daddr;
+ sa->sin_port = sh->dest;
+ sa->sin_addr.s_addr = ip_hdr(skb)->daddr;
}
- memcpy(&addr->v4.sin_addr.s_addr, from, sizeof(struct in_addr));
}
/* Initialize an sctp_addr from a socket. */