struct sctphdr *sh;
union sctp_addr src;
union sctp_addr dest;
- union sctp_addr tmp, tmp2;
int family;
struct sctp_af *af;
!af->addr_valid(&dest, NULL, skb))
goto discard_it;
- flip_to_n(&tmp, &dest);
- flip_to_n(&tmp2, &src);
-
- asoc = __sctp_rcv_lookup(skb, &tmp2, &tmp, &transport);
+ asoc = __sctp_rcv_lookup(skb, &src, &dest, &transport);
if (!asoc)
- ep = __sctp_rcv_lookup_endpoint(&tmp);
+ ep = __sctp_rcv_lookup_endpoint(&dest);
/* Retrieve the common input handling substructure. */
rcvr = asoc ? &asoc->base : &ep->base;
nf_reset(skb);
if (sk_filter(sk, skb))
- goto discard_release;
+ goto discard_release;
/* Create an SCTP packet structure. */
chunk = sctp_chunkify(skb, asoc, sk);
chunk->sctp_hdr = sh;
/* Set the source and destination addresses of the incoming chunk. */
- sctp_init_addrs(chunk, &tmp2, &tmp);
+ sctp_init_addrs(chunk, &src, &dest);
/* Remember where we came from. */
chunk->transport = transport;
int sctp_backlog_rcv(struct sock *sk, struct sk_buff *skb)
{
struct sctp_chunk *chunk = SCTP_INPUT_CB(skb)->chunk;
- struct sctp_inq *inqueue = &chunk->rcvr->inqueue;
- struct sctp_ep_common *rcvr = NULL;
+ struct sctp_inq *inqueue = &chunk->rcvr->inqueue;
+ struct sctp_ep_common *rcvr = NULL;
int backloged = 0;
- rcvr = chunk->rcvr;
+ rcvr = chunk->rcvr;
/* If the rcvr is dead then the association or endpoint
* has been deleted and we can safely drop the chunk
else
BUG();
- return 0;
+ return 0;
}
static void sctp_add_backlog(struct sock *sk, struct sk_buff *skb)
* Normally, if PMTU discovery is disabled, an ICMP Fragmentation
* Needed will never be sent, but if a message was sent before
* PMTU discovery was disabled that was larger than the PMTU, it
- * would not be fragmented, so it must be re-transmitted fragmented.
+ * would not be fragmented, so it must be re-transmitted fragmented.
*/
sctp_retransmit(&asoc->outqueue, t, SCTP_RTXR_PMTUD);
}
*
*/
void sctp_icmp_proto_unreachable(struct sock *sk,
- struct sctp_association *asoc,
- struct sctp_transport *t)
+ struct sctp_association *asoc,
+ struct sctp_transport *t)
{
SCTP_DEBUG_PRINTK("%s\n", __FUNCTION__);
struct sock *sk = NULL;
struct sctp_association *asoc;
struct sctp_transport *transport = NULL;
- union sctp_addr tmp, tmp2;
*app = NULL; *tpp = NULL;
/* Initialize local addresses for lookups. */
af->from_skb(&saddr, skb, 1);
af->from_skb(&daddr, skb, 0);
- flip_to_n(&tmp, &saddr);
- flip_to_n(&tmp2, &daddr);
/* Look for an association that matches the incoming ICMP error
* packet.
*/
- asoc = __sctp_lookup_association(&tmp, &tmp2, &transport);
+ asoc = __sctp_lookup_association(&saddr, &daddr, &transport);
if (!asoc)
return NULL;
{
struct sctp_association *asoc;
struct sctp_transport *transport;
- union sctp_addr tmp, tmp2;
- flip_to_n(&tmp, laddr);
- flip_to_n(&tmp2, paddr);
- if ((asoc = sctp_lookup_association(&tmp, &tmp2, &transport))) {
+ if ((asoc = sctp_lookup_association(laddr, paddr, &transport))) {
sctp_association_put(asoc);
return 1;
}
sctp_init_chunk_t *init;
struct sctp_transport *transport;
struct sctp_af *af;
- union sctp_addr tmp2;
ch = (sctp_chunkhdr_t *) skb->data;
if (!af)
continue;
- af->from_addr_param(paddr, params.addr, ntohs(sh->source), 0);
- flip_to_n(&tmp2, paddr);
+ af->from_addr_param(paddr, params.addr, sh->source, 0);
- asoc = __sctp_lookup_association(laddr, &tmp2, &transport);
+ asoc = __sctp_lookup_association(laddr, paddr, &transport);
if (asoc)
return asoc;
}