From owner-freebsd-bugs Sun Jul 14 9:50:15 2002 Delivered-To: freebsd-bugs@hub.freebsd.org Received: from mx1.FreeBSD.org (mx1.FreeBSD.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 4681937B405 for ; Sun, 14 Jul 2002 09:50:04 -0700 (PDT) Received: from freefall.freebsd.org (freefall.FreeBSD.org [216.136.204.21]) by mx1.FreeBSD.org (Postfix) with ESMTP id 37BEB43E6D for ; Sun, 14 Jul 2002 09:50:02 -0700 (PDT) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.12.4/8.12.4) with ESMTP id g6EGo2JU063337 for ; Sun, 14 Jul 2002 09:50:02 -0700 (PDT) (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.12.4/8.12.4/Submit) id g6EGo2Mx063336; Sun, 14 Jul 2002 09:50:02 -0700 (PDT) Received: from mx1.FreeBSD.org (mx1.FreeBSD.org [216.136.204.125]) by hub.freebsd.org (Postfix) with ESMTP id 612D937B425 for ; Sun, 14 Jul 2002 09:44:53 -0700 (PDT) Received: from imag.imag.fr (imag.imag.fr [129.88.30.1]) by mx1.FreeBSD.org (Postfix) with ESMTP id 4B42243E42 for ; Sun, 14 Jul 2002 09:44:52 -0700 (PDT) (envelope-from Jean-Luc.Richier@imag.fr) Received: from horus.imag.fr (horus.imag.fr [129.88.38.1]) by imag.imag.fr (8.11.6/8.11.6) with ESMTP id g6EGipS11998 for ; Sun, 14 Jul 2002 18:44:51 +0200 (MEST) Received: (from richier@localhost) by horus.imag.fr (8.11.6/8.11.6/Imag.pm.V2) id g6EGioM16505 for FreeBSD-gnats-submit@freebsd.org; Sun, 14 Jul 2002 18:44:51 +0200 (MEST) Received: from imag.imag.fr (imag.imag.fr [129.88.30.1]) by horus.imag.fr (8.11.6/8.11.6/Imag.pm.V2) with ESMTP id g6EGgug16475 for ; Sun, 14 Jul 2002 18:42:56 +0200 (MEST) Received: from luna.imag.fr (luna.imag.fr [129.88.26.80]) by imag.imag.fr (8.11.6/8.11.6) with ESMTP id g6EGgtS11982 for ; Sun, 14 Jul 2002 18:42:56 +0200 (MEST) Received: from luna.imag.fr (localhost [127.0.0.1]) by luna.imag.fr (8.12.3/8.12.3) with ESMTP id g6EGd2Md092934; Sun, 14 Jul 2002 18:39:02 +0200 (CEST) (envelope-from richier@horus.imag.fr) Received: (from root@localhost) by luna.imag.fr (8.12.3/8.12.3/Submit) id g6EGd2Jv092933; Sun, 14 Jul 2002 18:39:02 +0200 (CEST) (envelope-from richier) Message-Id: <200207141639.g6EGd2Jv092933@luna.imag.fr> Date: Sun, 14 Jul 2002 18:39:02 +0200 (CEST) From: Jean-Luc Richier Reply-To: Jean-Luc Richier To: FreeBSD-gnats-submit@FreeBSD.org Cc: Jean-Luc Richier X-Send-Pr-Version: 3.113 Subject: kern/40558: UDP6 sockets do not receive responses of sendto to IPv4mapped address Sender: owner-freebsd-bugs@FreeBSD.ORG Precedence: bulk List-ID: List-Archive: (Web Archive) List-Help: (List Instructions) List-Subscribe: List-Unsubscribe: X-Loop: FreeBSD.org >Number: 40558 >Category: kern >Synopsis: UDP6 sockets do not receive responses of sendto to IPv4mapped address >Confidential: no >Severity: serious >Priority: high >Responsible: freebsd-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun Jul 14 09:50:01 PDT 2002 >Closed-Date: >Last-Modified: >Originator: Jean-Luc Richier >Release: FreeBSD 4.6-RELEASE i386 >Organization: LSR-IMAG, Grenoble, France >Environment: System: FreeBSD luna.imag.fr 4.6-RELEASE FreeBSD 4.6-RELEASE #6: Wed Jun 12 18:55:37 GMT 2002 richier@luna.imag.fr:/usr/src/sys/compile/VLAN i386 also FreeBSD current (June, 24 2002) and KAME FreeBSD (kame-20020708-freebsd46-snap.tgz) Description: An UDP PF_INET6 socket which is implicitely binded using sento to an IPv6 IPv4mapped address (::FFFF:x.y.z.t) will not receive the IPv4 packets sent in response How-To-Repeat: + On a machine with IPv4 address x.y.z.t, validate the udp4 echo service in /etc/inetd.conf + Write and execute the following test program: - s = socket(PF_INET6, SOCK_DGRAM, 0); - getaddrinfo("0:ffff:x.y.z.t","echo", &hints, &res); - sento(s, "data", 4, 0, res->ai_addr, res->ai_addrlen); - recvfrom(s, buf, sizeof buf, 0, (struct sockaddr *)&from, &fromlen); The recvfrom will not receives any packet Fix: The bug is the udp sendto code. INET6 sendto udp code does not set the INP_IPV4 flag on the inpcb of the socket. Therefore the received IPv4 packets are not matched against this pcb. To correct apply the following patch: --- /sys/netinet6/udp6_usrreq.c.DIST Sun Apr 28 07:40:27 2002 +++ /sys/netinet6/udp6_usrreq.c Wed May 29 19:23:23 2002 @@ -713,6 +713,7 @@ if (sin6) in6_sin6_2_sin_in_sock(addr); + inp->inp_vflag |= INP_IPV4; pru = inetsw[ip_protox[IPPROTO_UDP]].pr_usrreqs; error = ((*pru->pru_send)(so, flags, m, addr, control, p)); >Description: >How-To-Repeat: >Fix: >Release-Note: >Audit-Trail: >Unformatted: To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-bugs" in the body of the message