SCTP: Pick the correct port when binding to 0.
authorVlad Yasevich <vladislav.yasevich@hp.com>
Tue, 21 Aug 2007 05:24:30 +0000 (14:24 +0900)
committerVlad Yasevich <vladislav.yasevich@hp.com>
Thu, 30 Aug 2007 17:55:20 +0000 (13:55 -0400)
sctp_bindx() allows the use of unspecified port.  The problem is
that every address we bind to ends up selecting a new port if
the user specified port 0.  This patch allows re-use of the
already selected port when the port from bindx was 0.

Signed-off-by: Vlad Yasevich <vladislav.yasevich@hp.com>
net/sctp/socket.c

index 01c6364245b7081ec1224ef10c8434eebdb971ed..de7921226725c013f51e74afedc5a51adc4fffe7 100644 (file)
@@ -353,6 +353,7 @@ SCTP_STATIC int sctp_do_bind(struct sock *sk, union sctp_addr *addr, int len)
         * The function sctp_get_port_local() does duplicate address
         * detection.
         */
+       addr->v4.sin_port = htons(snum);
        if ((ret = sctp_get_port_local(sk, addr))) {
                if (ret == (long) sk) {
                        /* This endpoint has a conflicting address. */