Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6a1e5f33 authored by Al Viro's avatar Al Viro Committed by David S. Miller
Browse files

[SCTP]: sctp_process_init() and sctp_source() switched to net-endian.



both are done in one go since almost always we have result of
the latter immediately passed to the former.  Possibly non-obvious
note: sctp_process_param() is endian-agnostic

Signed-off-by: default avatarAl Viro <viro@zeniv.linux.org.uk>
Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
parent 02a8a4db
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
@@ -346,10 +346,8 @@ static void sctp_endpoint_bh_rcv(struct sctp_endpoint *ep)
		 * COOKIE-ECHO chunk.
		 */
		if (NULL == chunk->asoc) {
			union sctp_addr tmp;
			flip_to_n(&tmp, sctp_source(chunk));
			asoc = sctp_endpoint_lookup_assoc(ep,
							  &tmp,
							  sctp_source(chunk),
							  &transport);
			chunk->asoc = asoc;
			chunk->transport = transport;
+4 −8
Original line number Diff line number Diff line
@@ -1041,10 +1041,10 @@ const union sctp_addr *sctp_source(const struct sctp_chunk *chunk)
{
	/* If we have a known transport, use that.  */
	if (chunk->transport) {
		return &chunk->transport->ipaddr_h;
		return &chunk->transport->ipaddr;
	} else {
		/* Otherwise, extract it from the IP header.  */
		return &chunk->source_h;
		return &chunk->source;
	}
}

@@ -1844,7 +1844,6 @@ int sctp_process_init(struct sctp_association *asoc, sctp_cid_t cid,
	struct sctp_transport *transport;
	struct list_head *pos, *temp;
	char *cookie;
	union sctp_addr tmp;

	/* We must include the address that the INIT packet came from.
	 * This is the only address that matters for an INIT packet.
@@ -1857,8 +1856,7 @@ int sctp_process_init(struct sctp_association *asoc, sctp_cid_t cid,
	 * be a a better choice than any of the embedded addresses.
	 */
	if (peer_addr) {
		flip_to_n(&tmp, peer_addr);
		if(!sctp_assoc_add_peer(asoc, &tmp, gfp, SCTP_ACTIVE))
		if(!sctp_assoc_add_peer(asoc, peer_addr, gfp, SCTP_ACTIVE))
			goto nomem;
	}

@@ -2419,7 +2417,6 @@ static __be16 sctp_process_asconf_param(struct sctp_association *asoc,
	union sctp_addr	addr;
	struct list_head *pos;
	union sctp_addr_param *addr_param;
	union sctp_addr tmp;

	addr_param = (union sctp_addr_param *)
			((void *)asconf_param + sizeof(sctp_addip_param_t));
@@ -2463,8 +2460,7 @@ static __be16 sctp_process_asconf_param(struct sctp_association *asoc,
		 * an Error Cause TLV set to the new error code 'Request to
		 * Delete Source IP Address'
		 */
		flip_to_n(&tmp, sctp_source(asconf));
		if (sctp_cmp_addr_exact(&tmp, &addr))
		if (sctp_cmp_addr_exact(sctp_source(asconf), &addr))
			return SCTP_ERROR_DEL_SRC_IP;

		sctp_assoc_del_peer(asoc, &addr);
+2 −6
Original line number Diff line number Diff line
@@ -598,7 +598,6 @@ sctp_disposition_t sctp_sf_do_5_1D_ce(const struct sctp_endpoint *ep,
	struct sctp_ulpevent *ev, *ai_ev = NULL;
	int error = 0;
	struct sctp_chunk *err_chk_p;
	union sctp_addr tmp;

	/* If the packet is an OOTB packet which is temporarily on the
	 * control endpoint, respond with an ABORT.
@@ -666,9 +665,8 @@ sctp_disposition_t sctp_sf_do_5_1D_ce(const struct sctp_endpoint *ep,
	 */
	peer_init = &chunk->subh.cookie_hdr->c.peer_init[0];

	flip_to_h(&tmp, &chunk->subh.cookie_hdr->c.peer_addr);
	if (!sctp_process_init(new_asoc, chunk->chunk_hdr->type,
			       &tmp,
			       &chunk->subh.cookie_hdr->c.peer_addr,
			       peer_init, GFP_ATOMIC))
		goto nomem_init;

@@ -5105,7 +5103,6 @@ static struct sctp_packet *sctp_ootb_pkt_new(const struct sctp_association *asoc
	__u16 sport;
	__u16 dport;
	__u32 vtag;
	union sctp_addr tmp;

	/* Get the source and destination port from the inbound packet.  */
	sport = ntohs(chunk->sctp_hdr->dest);
@@ -5136,8 +5133,7 @@ static struct sctp_packet *sctp_ootb_pkt_new(const struct sctp_association *asoc
	}

	/* Make a transport for the bucket, Eliza... */
	flip_to_n(&tmp, sctp_source(chunk));
	transport = sctp_transport_new(&tmp, GFP_ATOMIC);
	transport = sctp_transport_new(sctp_source(chunk), GFP_ATOMIC);
	if (!transport)
		goto nomem;