]> Pileus Git - ~andy/linux/blobdiff - net/sctp/sm_statefuns.c
[SCTP]: sctp_transport_{init,new}() switched to net-endian.
[~andy/linux] / net / sctp / sm_statefuns.c
index f460727675492646a7766be612ef1b2390b05f52..c5362638d67257868d936a1ab6f2848209c60a8c 100644 (file)
@@ -598,6 +598,7 @@ 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.
@@ -665,8 +666,9 @@ 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,
-                              &chunk->subh.cookie_hdr->c.peer_addr,
+                              &tmp,
                               peer_init, GFP_ATOMIC))
                goto nomem_init;
 
@@ -852,7 +854,7 @@ static sctp_disposition_t sctp_sf_heartbeat(const struct sctp_endpoint *ep,
 
        hbinfo.param_hdr.type = SCTP_PARAM_HEARTBEAT_INFO;
        hbinfo.param_hdr.length = htons(sizeof(sctp_sender_hb_info_t));
-       hbinfo.daddr = transport->ipaddr_h;
+       hbinfo.daddr = transport->ipaddr;
        hbinfo.sent_at = jiffies;
        hbinfo.hb_nonce = transport->hb_nonce;
 
@@ -1167,8 +1169,8 @@ static int sctp_sf_check_restart_addrs(const struct sctp_association *new_asoc,
                list_for_each(pos2, &asoc->peer.transport_addr_list) {
                        addr = list_entry(pos2, struct sctp_transport,
                                          transports);
-                       if (sctp_cmp_addr_exact(&new_addr->ipaddr_h,
-                                               &addr->ipaddr_h)) {
+                       if (sctp_cmp_addr_exact(&new_addr->ipaddr,
+                                               &addr->ipaddr)) {
                                found = 1;
                                break;
                        }
@@ -5103,6 +5105,7 @@ 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);
@@ -5133,7 +5136,8 @@ static struct sctp_packet *sctp_ootb_pkt_new(const struct sctp_association *asoc
        }
 
        /* Make a transport for the bucket, Eliza... */
-       transport = sctp_transport_new(sctp_source(chunk), GFP_ATOMIC);
+       flip_to_n(&tmp, sctp_source(chunk));
+       transport = sctp_transport_new(&tmp, GFP_ATOMIC);
        if (!transport)
                goto nomem;