From owner-freebsd-net@FreeBSD.ORG Tue Aug 10 10:06:24 2010 Return-Path: Delivered-To: freebsd-net@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id A5556106564A; Tue, 10 Aug 2010 10:06:24 +0000 (UTC) (envelope-from Michael.Tuexen@lurchi.franken.de) Received: from mail-n.franken.de (drew.ipv6.franken.de [IPv6:2001:638:a02:a001:20e:cff:fe4a:feaa]) by mx1.freebsd.org (Postfix) with ESMTP id 098A58FC1B; Tue, 10 Aug 2010 10:06:24 +0000 (UTC) Received: from [192.168.1.195] (p508FED7C.dip.t-dialin.net [80.143.237.124]) (Authenticated sender: micmac) by mail-n.franken.de (Postfix) with ESMTP id C873F1C0C0BCE; Tue, 10 Aug 2010 12:06:21 +0200 (CEST) Mime-Version: 1.0 (Apple Message framework v1081) Content-Type: text/plain; charset=us-ascii From: Michael Tuexen In-Reply-To: <201008100920.o7A9K9Gv096464@freefall.freebsd.org> Date: Tue, 10 Aug 2010 12:06:20 +0200 Content-Transfer-Encoding: quoted-printable Message-Id: <31388BBC-AA82-46F8-B893-E81588FD97E9@lurchi.franken.de> References: <201008100920.o7A9K9Gv096464@freefall.freebsd.org> To: brucec@FreeBSD.org X-Mailer: Apple Mail (2.1081) Cc: freebsd-net@FreeBSD.org, freebsd-amd64@FreeBSD.org Subject: Re: amd64/149488: SCTP streams not working on AMD64 platform X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 10 Aug 2010 10:06:24 -0000 Dear all, it is not a problem in the kernel. The application does not handle the cmsg stuff correctly in send_on_stream(). Using /* Send a message on a socket and a particular stream */ void send_on_stream(int sock, unsigned int strid, unsigned char * msg, = size_t sz) { struct msghdr mhdr; struct iovec iov; struct cmsghdr *cmsg; struct sctp_sndrcvinfo *info; char buffer[CMSG_SPACE(sizeof(struct sctp_sndrcvinfo))]; ssize_t ret; =09 memset(&mhdr, 0, sizeof(mhdr)); memset(&iov, 0, sizeof(iov)); memset(buffer, 0, CMSG_SPACE(sizeof(struct sctp_sndrcvinfo))); =09 /* IO Vector: message data */ iov.iov_base =3D msg; iov.iov_len =3D sz; =09 /* Anciliary data: specify SCTP stream */ cmsg =3D (struct cmsghdr *)buffer; cmsg->cmsg_level =3D IPPROTO_SCTP; cmsg->cmsg_type =3D SCTP_SNDRCV; cmsg->cmsg_len =3D CMSG_LEN(sizeof(struct sctp_sndrcvinfo)); info =3D (struct sctp_sndrcvinfo *)CMSG_DATA(cmsg); info->sinfo_stream =3D strid; mhdr.msg_iov =3D &iov; mhdr.msg_iovlen =3D 1; mhdr.msg_control =3D buffer; mhdr.msg_controllen =3D cmsg->cmsg_len; if ( (ret =3D sendmsg(sock, &mhdr, 0)) < 0) { perror("sendmsg"); exit (1); } ASSERT( ret =3D=3D sz ); /* There should not be partial delivery = with sendmsg... */ =09 return; } solves the problem. Best regards Michael On Aug 10, 2010, at 11:20 AM, brucec@FreeBSD.org wrote: > Synopsis: SCTP streams not working on AMD64 platform >=20 > Responsible-Changed-From-To: freebsd-amd64->freebsd-net > Responsible-Changed-By: brucec > Responsible-Changed-When: Tue Aug 10 09:19:47 UTC 2010 > Responsible-Changed-Why:=20 > Over to maintainer(s). >=20 > http://www.freebsd.org/cgi/query-pr.cgi?pr=3D149488 > _______________________________________________ > freebsd-net@freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-net > To unsubscribe, send any mail to "freebsd-net-unsubscribe@freebsd.org" >=20