From Jean-Luc.Richier@imag.fr  Sun Aug 25 10:18:11 2002
Return-Path: <Jean-Luc.Richier@imag.fr>
Received: from mx1.FreeBSD.org (mx1.FreeBSD.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 7AC7437B400
	for <FreeBSD-gnats-submit@freebsd.org>; Sun, 25 Aug 2002 10:18:11 -0700 (PDT)
Received: from imag.imag.fr (imag.imag.fr [129.88.30.1])
	by mx1.FreeBSD.org (Postfix) with ESMTP id 13D3F43E6A
	for <FreeBSD-gnats-submit@freebsd.org>; Sun, 25 Aug 2002 10:18:10 -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 g7PHI8v24473
	for <FreeBSD-gnats-submit@freebsd.org>; Sun, 25 Aug 2002 19:18:08 +0200 (MEST)
Received: (from richier@localhost)
	by horus.imag.fr (8.11.6/8.11.6/Imag.pm.V2) id g7PHI8109471
	for FreeBSD-gnats-submit@freebsd.org; Sun, 25 Aug 2002 19:18:08 +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 g7PHHgq09421
	for <richier@horus.imag.fr>; Sun, 25 Aug 2002 19:17:42 +0200 (MEST)
Received: from lagavulin.imag.fr (lagavulin.imag.fr [129.88.23.10])
	by imag.imag.fr (8.11.6/8.11.6) with ESMTP id g7PHHgv24453
	for <Jean-Luc.Richier@imag.fr>; Sun, 25 Aug 2002 19:17:42 +0200 (MEST)
Received: from lagavulin.imag.fr (localhost [127.0.0.1])
	by lagavulin.imag.fr (8.12.5/8.12.5) with ESMTP id g7PHGQ7B009358;
	Sun, 25 Aug 2002 19:16:27 +0200 (MEST)
	(envelope-from richier@horus.imag.fr)
Received: (from root@localhost)
	by lagavulin.imag.fr (8.12.5/8.12.5/Submit) id g7PHGQ1W009357;
	Sun, 25 Aug 2002 19:16:26 +0200 (MEST)
	(envelope-from richier)
Message-Id: <200208251716.g7PHGQ1W009357@lagavulin.imag.fr>
Date: Sun, 25 Aug 2002 19:16:26 +0200 (MEST)
From: Jean-Luc Richier <Jean-Luc.Richier@imag.fr>
Reply-To: Jean-Luc Richier <Jean-Luc.Richier@imag.fr>
To: FreeBSD-gnats-submit@freebsd.org
Cc: Jean-Luc.Richier@imag.fr
Subject: quota and rpc.statd are still IPv4 only, and not INET independant
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         42004
>Category:       bin
>Synopsis:       [quota] quota is still IPv4 only, and not INET independant
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    freebsd-bugs
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Sun Aug 25 10:20:02 PDT 2002
>Closed-Date:    Mon May 07 03:52:07 UTC 2012
>Last-Modified:  Mon May 07 03:52:07 UTC 2012
>Originator:     Jean-Luc Richier
>Release:        FreeBSD 5.0-CURRENT i386
>Organization:
LSR-IMAG, Grenoble, France
>Environment:
System: FreeBSD lagavulin.imag.fr 5.0-CURRENT FreeBSD 5.0-CURRENT #1: Thu Aug 22 09:43:42 MEST 2002 richier@lagavulin.imag.fr:/altroot1a/usr/obj/usr/src/sys/GENERIC i386


	
>Description:
	Almost all NFS/kernel code has been ported to TIRPC in July and is
	therefore INET4/INET6 indenpendant. There is one command (quota) which
	has been forgotten, and a modification done in rpc.statd is not INET*
	independant.
>How-To-Repeat:
	Code inspection
>Fix:
	Applies the following patch - and do not use inet_ntoa/gethostby*
	functions, sockaddr_in structures and svc_getcaller call anymore.

	


--- usr.bin/quota/quota.c.1.18	Fri Aug  9 06:36:48 2002
+++ usr.bin/quota/quota.c	Sun Aug 25 17:43:36 2002
@@ -665,26 +665,20 @@
 callaurpc(char *host, int prognum, int versnum, int procnum,
     xdrproc_t inproc, char *in, xdrproc_t outproc, char *out)
 {
-	struct sockaddr_in server_addr;
 	enum clnt_stat clnt_stat;
-	struct hostent *hp;
 	struct timeval timeout, tottimeout;
  
-	CLIENT *client = NULL;
-	int sock = RPC_ANYSOCK;
+	CLIENT *client;
  
-	if ((hp = gethostbyname(host)) == NULL)
-		return ((int) RPC_UNKNOWNHOST);
+	/* XXX - If clnt_call fails, we should try other addresses and AF_ */
+	client = clnt_create(host, prognum, versnum, "udp");
+	if (client == NULL)
+		return ((int) rpc_createerr.cf_stat);
+
 	timeout.tv_usec = 0;
 	timeout.tv_sec = 6;
-	bcopy(hp->h_addr, &server_addr.sin_addr,
-			MIN(hp->h_length,(int)sizeof(server_addr.sin_addr)));
-	server_addr.sin_family = AF_INET;
-	server_addr.sin_port =  0;
-
-	if ((client = clntudp_create(&server_addr, prognum,
-	    versnum, timeout, &sock)) == NULL)
-		return ((int) rpc_createerr.cf_stat);
+	(void) CLNT_CONTROL(client,
+			CLSET_RETRY_TIMEOUT, (char *)(void *)&timeout);
 
 	client->cl_auth = authunix_create_default();
 	tottimeout.tv_sec = 25;
--- usr.sbin/rpc.statd/procs.c.1.13	Tue Jul 16 00:47:17 2002
+++ usr.sbin/rpc.statd/procs.c	Wed Aug 21 17:42:43 2002
@@ -52,6 +52,18 @@
 
 #include "statd.h"
 
+static const char *
+from_addr(saddr)
+	struct sockaddr *saddr;
+{
+	static char inet_buf[INET6_ADDRSTRLEN];
+
+	if (getnameinfo(saddr, saddr->sa_len, inet_buf, sizeof(inet_buf),
+			NULL, 0, NI_NUMERICHOST) == 0)
+		return inet_buf;
+	return "???";
+}
+
 /* sm_check_hostname -------------------------------------------------------- */
 /*
  * Purpose: Check `mon_name' member of sm_name struct to ensure that the array
@@ -66,13 +78,13 @@
 int sm_check_hostname(struct svc_req *req, char *arg)
 {
   int len, dstlen, ret;
-  struct sockaddr_in *claddr;
+  struct sockaddr *claddr;
   char *dst;
 
   len = strlen(arg);
   dstlen = (4 * len) + 1;
   dst = malloc(dstlen);
-  claddr = svc_getcaller(req->rq_xprt);
+  claddr = svc_getrpccaller(req->rq_xprt);
   ret = 1;
 
   if (claddr == NULL || dst == NULL)
@@ -83,7 +95,7 @@
   {
     syslog(LOG_ERR,
 	"sm_stat: client %s hostname %s contained invalid characters.",
-	inet_ntoa(claddr->sin_addr),
+	from_addr(claddr),
 	dst);
     ret = 0;
   }
@@ -102,7 +114,7 @@
 {
   static sm_stat_res res;
   struct addrinfo *ai;
-  struct sockaddr_in *claddr;
+  struct sockaddr *claddr;
   static int err;
 
   err = 1;
@@ -120,9 +132,9 @@
     }
     else
     {
-      claddr = svc_getcaller(req->rq_xprt);
+      claddr = svc_getrpccaller(req->rq_xprt);
       syslog(LOG_ERR, "invalid hostname to sm_stat from %s: %s",
-	  inet_ntoa(claddr->sin_addr), arg->mon_name);
+	  from_addr(claddr), arg->mon_name);
       res.res_stat = stat_fail;
     }
   }

>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->matteo 
Responsible-Changed-By: matteo 
Responsible-Changed-When: Wed Mar 28 10:04:49 UTC 2007 
Responsible-Changed-Why:  
I'll do some work on rpc.statd and I can work on this issue too. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=42004 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/42004: commit references a PR
Date: Mon,  2 Apr 2007 18:59:55 +0000 (UTC)

 matteo      2007-04-02 18:59:48 UTC
 
   FreeBSD src repository
 
   Modified files:
     usr.sbin/rpc.statd   procs.c 
   Log:
   Make rpc.statd INET* indipendent by converting sockaddr_in structures
   to sockaddr ones and using svc_getrpccaller instead of svc_getcaller.
   A similar patch was committed to rpc.lockd back in 2002 .
   
   PR:             bin/42004
   MFC after:      1 week
   
   Revision  Changes    Path
   1.17      +18 -6     src/usr.sbin/rpc.statd/procs.c
 _______________________________________________
 cvs-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/cvs-all
 To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/42004: commit references a PR
Date: Thu, 12 Apr 2007 07:47:53 +0000 (UTC)

 matteo      2007-04-12 07:47:45 UTC
 
   FreeBSD src repository
 
   Modified files:        (Branch: RELENG_6)
     usr.sbin/rpc.statd   procs.c 
   Log:
   MFC rev. 1.16 and rev. 1.17
           1.16: compile under WARNS=6
   
           1.17: Make rpc.statd INET* indipendent by converting
           sockaddr_in structures to sockaddr ones and using
           svc_getrpccaller instead of svc_getcaller.
           A similar patch was committed to rpc.lockd back in 2002 . [1]
   
   PR:     bin/42004 [1]
   
   Revision   Changes    Path
   1.14.10.2  +21 -10    src/usr.sbin/rpc.statd/procs.c
 _______________________________________________
 cvs-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/cvs-all
 To unsubscribe, send any mail to "cvs-all-unsubscribe@freebsd.org"
 
Responsible-Changed-From-To: matteo->freebsd-bugs 
Responsible-Changed-By: matteo 
Responsible-Changed-When: Thu Aug 23 05:40:16 UTC 2007 
Responsible-Changed-Why:  
Put this back to the pool: I took care of the rpc.statd part of this PR but don't know enough about quota code to commit the patch (truckman@ said it applies cleanly and compilesi without errors) 

http://www.freebsd.org/cgi/query-pr.cgi?pr=42004 
Responsible-Changed-From-To: freebsd-bugs->mpp 
Responsible-Changed-By: mpp 
Responsible-Changed-When: Thu Aug 23 06:31:49 UTC 2007 
Responsible-Changed-Why:  
I'll look at the quota part of this. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=42004 
State-Changed-From-To: open->suspended 
State-Changed-By: linimon 
State-Changed-When: Fri Feb 29 00:41:30 UTC 2008 
State-Changed-Why:  
The rpc.statd part of this has been committed, so remove it from the 
Synopsis. 

Since this doesn't appear to be actively being worked on, I'm going to 
set it to 'suspended' so I don't trip over it again. 

Hat:		bugmeister 

http://www.freebsd.org/cgi/query-pr.cgi?pr=42004 
Responsible-Changed-From-To: mpp->freebsd-bugs 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Mon Feb 14 20:52:47 UTC 2011 
Responsible-Changed-Why:  
mpp@'s address is now bouncing.  In any case he has been inactive for 
several years. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=42004 
State-Changed-From-To: suspended->closed 
State-Changed-By: eadler 
State-Changed-When: Mon May 7 03:52:06 UTC 2012 
State-Changed-Why:  
I don't believe this is true anymore. if it is, plese email me 

http://www.freebsd.org/cgi/query-pr.cgi?pr=42004 
>Unformatted:
