From nobody@FreeBSD.org  Wed Aug 12 18:53:30 2009
Return-Path: <nobody@FreeBSD.org>
Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34])
	by hub.freebsd.org (Postfix) with ESMTP id DBB32106564A
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 12 Aug 2009 18:53:30 +0000 (UTC)
	(envelope-from nobody@FreeBSD.org)
Received: from www.freebsd.org (www.freebsd.org [IPv6:2001:4f8:fff6::21])
	by mx1.freebsd.org (Postfix) with ESMTP id CADBA8FC44
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 12 Aug 2009 18:53:30 +0000 (UTC)
Received: from www.freebsd.org (localhost [127.0.0.1])
	by www.freebsd.org (8.14.3/8.14.3) with ESMTP id n7CIrUFu049843
	for <freebsd-gnats-submit@FreeBSD.org>; Wed, 12 Aug 2009 18:53:30 GMT
	(envelope-from nobody@www.freebsd.org)
Received: (from nobody@localhost)
	by www.freebsd.org (8.14.3/8.14.3/Submit) id n7CIrUHH049842;
	Wed, 12 Aug 2009 18:53:30 GMT
	(envelope-from nobody)
Message-Id: <200908121853.n7CIrUHH049842@www.freebsd.org>
Date: Wed, 12 Aug 2009 18:53:30 GMT
From: Larry Baird <lab@gta.com>
To: freebsd-gnats-submit@FreeBSD.org
Subject: NET_RT_DUMP not working in FreeBSD 8
X-Send-Pr-Version: www-3.1
X-GNATS-Notify:

>Number:         137700
>Category:       kern
>Synopsis:       sysctl(8): NET_RT_DUMP not working in FreeBSD 8
>Confidential:   no
>Severity:       serious
>Priority:       medium
>Responsible:    bz
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Wed Aug 12 19:00:15 UTC 2009
>Closed-Date:    Mon Aug 24 20:19:48 UTC 2009
>Last-Modified:  Mon Aug 24 20:19:48 UTC 2009
>Originator:     Larry Baird
>Release:        8.0
>Organization:
GTA, Inc.
>Environment:
FreeBSD griffin.gta.com 8.0-BETA2 FreeBSD 8.0-BETA2 #0: Mon Aug  3 12:50:53 EDT 2009     root@griffin.gta.com:/usr/src/sys/i386/compile/GRIFFIN  i386
>Description:
Sysctl for getting routing table always returns 0 for size.
>How-To-Repeat:
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/sysctl.h>
#include <sys/socket.h>

int main( int argc, char *argv[] )
{
    int mib[6];
    size_t needed;

    mib[0] = CTL_NET;
    mib[1] = PF_ROUTE;
    mib[2] = 0;         /* protocol */
    mib[3] = 0;         /* wildcard address family */
    mib[4] = NET_RT_DUMP;
    mib[5] = 0;         /* no flags */

    if ( sysctl( mib, 6, NULL, &needed, NULL, 0 ) < 0 ) {
        perror( "sysctl" );
    } else {
        printf( "Buffer needs %d bytes\n", needed );
    }

    exit( 0 );
}

>Fix:


>Release-Note:
>Audit-Trail:
Responsible-Changed-From-To: freebsd-bugs->freebsd-net 
Responsible-Changed-By: linimon 
Responsible-Changed-When: Wed Aug 12 21:36:18 UTC 2009 
Responsible-Changed-Why:  
Over to maintainer(s). 

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

From: "Bjoern A. Zeeb" <bzeeb-lists@lists.zabbadoz.net>
To: bug-followup@FreeBSD.org, lab@gta.com
Cc: freebsd-net@freebsd.org, freebsd-bugs@freebsd.org
Subject: Re: bin/137700: sysctl(8): NET_RT_DUMP not working in FreeBSD 8
Date: Wed, 12 Aug 2009 22:24:14 +0000 (UTC)

 On Wed, 12 Aug 2009, Li, Qing wrote:
 
 > Hi,
 >
 > What's not working ?
 >
 > The code reported in the bug is identical to the code in
 > /usr.sbin/netstat/route.c, function "ntreestuff()".
 > Please take a look at this code.
 >
 > "netstat -r" works in FreeBSD 8.
 
 uses kvm still.
 
 If the sysctl doesn't work, then that's probably my fault; assign the PR
 to bz and I'll look.
 
 /bz
 
 -- 
 Bjoern A. Zeeb           What was I talking about and who are you again?
Responsible-Changed-From-To: freebsd-net->bz 
Responsible-Changed-By: bz 
Responsible-Changed-When: Wed Aug 12 23:11:55 UTC 2009 
Responsible-Changed-Why:  
My bug. my fix. 

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

From: "Bjoern A. Zeeb" <bz@FreeBSD.org>
To: bug-followup@FreeBSD.org, lab@gta.com
Cc: freebsd-net@freebsd.org, freebsd-bugs@freebsd.org
Subject: Re: bin/137700: sysctl(8): NET_RT_DUMP not working in FreeBSD 8
Date: Wed, 12 Aug 2009 23:14:48 +0000 (UTC)

 On Wed, 12 Aug 2009, Bjoern A. Zeeb wrote:
 
 Here's the fix (untested):
 http://people.freebsd.org/~bz/20090812-04-rtsock-rt_dump-bugfix-pr137700.diff
 
 Shame on me:(
 
 /bz
 
 -- 
 Bjoern A. Zeeb           What was I talking about and who are you again?

From: Larry Baird <lab@gta.com>
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: bin/137700: sysctl(8): NET_RT_DUMP not working in FreeBSD 8
Date: Wed, 12 Aug 2009 19:40:59 -0400

 Bjoern,
 
 > Here's the fix (untested):
 > http://people.freebsd.org/~bz/20090812-04-rtsock-rt_dump-bugfix-pr137700.diff
 Thanks for the quick reply.  I'll try the patch later this evening and
 let you know how it goes.
 
 Larry
 
 -- 
 ------------------------------------------------------------------------
 Larry Baird                        | http://www.gta.com
 Global Technology Associates, Inc. | Orlando, FL
 Email: lab@gta.com                 | TEL 407-380-0220, FAX 407-380-6080

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/137700: commit references a PR
Date: Thu, 13 Aug 2009 09:30:17 +0000 (UTC)

 Author: bz
 Date: Thu Aug 13 09:29:52 2009
 New Revision: 196174
 URL: http://svn.freebsd.org/changeset/base/196174
 
 Log:
   Put multiple instructions into a block when iterating; unbreaks
   NET_RT_DUMP, which otherwise only returned information of AF_MAX.
   This was broken in r193232 (save your time - my bug, my fix).
   
   PR:		kern/137700
   Reported by:	Larry Baird (lab gta.com)
   Tested by:	Larry Baird (lab gta.com)
   Reviewed by:	zec, lstewart, qing
   Approved by:	re (kib)
 
 Modified:
   head/sys/net/rtsock.c
 
 Modified: head/sys/net/rtsock.c
 ==============================================================================
 --- head/sys/net/rtsock.c	Thu Aug 13 09:17:07 2009	(r196173)
 +++ head/sys/net/rtsock.c	Thu Aug 13 09:29:52 2009	(r196174)
 @@ -1473,7 +1473,7 @@ sysctl_rtsock(SYSCTL_HANDLER_ARGS)
  		/*
  		 * take care of routing entries
  		 */
 -		for (error = 0; error == 0 && i <= lim; i++)
 +		for (error = 0; error == 0 && i <= lim; i++) {
  			rnh = rt_tables_get_rnh(req->td->td_proc->p_fibnum, i);
  			if (rnh != NULL) {
  				RADIX_NODE_HEAD_LOCK(rnh); 
 @@ -1482,6 +1482,7 @@ sysctl_rtsock(SYSCTL_HANDLER_ARGS)
  				RADIX_NODE_HEAD_UNLOCK(rnh);
  			} else if (af != 0)
  				error = EAFNOSUPPORT;
 +		}
  		break;
  
  	case NET_RT_IFLIST:
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 

From: dfilter@FreeBSD.ORG (dfilter service)
To: bug-followup@FreeBSD.org
Cc:  
Subject: Re: kern/137700: commit references a PR
Date: Thu, 13 Aug 2009 09:32:31 +0000 (UTC)

 Author: bz
 Date: Thu Aug 13 09:32:15 2009
 New Revision: 196175
 URL: http://svn.freebsd.org/changeset/base/196175
 
 Log:
   MFC r196174:
   
     Put multiple instructions into a block when iterating; unbreaks
     NET_RT_DUMP, which otherwise only returned information of AF_MAX.
     This was broken in r193232 (save your time - my bug, my fix).
   
     Reported by:  Larry Baird (lab gta.com)
     Tested by:    Larry Baird (lab gta.com)
     Reviewed by:  zec, lstewart, qing
   
   PR:		kern/137700
   Approved by:	re (kib)
 
 Modified:
   stable/8/sys/   (props changed)
   stable/8/sys/amd64/include/xen/   (props changed)
   stable/8/sys/cddl/contrib/opensolaris/   (props changed)
   stable/8/sys/contrib/dev/acpica/   (props changed)
   stable/8/sys/contrib/pf/   (props changed)
   stable/8/sys/dev/ata/   (props changed)
   stable/8/sys/dev/ata/ata-usb.c   (props changed)
   stable/8/sys/dev/cxgb/   (props changed)
   stable/8/sys/dev/sound/usb/uaudio.c   (props changed)
   stable/8/sys/dev/sound/usb/uaudio.h   (props changed)
   stable/8/sys/dev/sound/usb/uaudio_pcm.c   (props changed)
   stable/8/sys/dev/sound/usb/uaudioreg.h   (props changed)
   stable/8/sys/dev/usb/controller/at91dci.c   (props changed)
   stable/8/sys/dev/usb/controller/at91dci.h   (props changed)
   stable/8/sys/dev/usb/controller/at91dci_atmelarm.c   (props changed)
   stable/8/sys/dev/usb/controller/atmegadci.c   (props changed)
   stable/8/sys/dev/usb/controller/atmegadci.h   (props changed)
   stable/8/sys/dev/usb/controller/atmegadci_atmelarm.c   (props changed)
   stable/8/sys/dev/usb/controller/ehci.c   (props changed)
   stable/8/sys/dev/usb/controller/ehci.h   (props changed)
   stable/8/sys/dev/usb/controller/ehci_ixp4xx.c   (props changed)
   stable/8/sys/dev/usb/controller/ehci_mbus.c   (props changed)
   stable/8/sys/dev/usb/controller/ehci_pci.c   (props changed)
   stable/8/sys/dev/usb/controller/musb_otg.c   (props changed)
   stable/8/sys/dev/usb/controller/musb_otg.h   (props changed)
   stable/8/sys/dev/usb/controller/musb_otg_atmelarm.c   (props changed)
   stable/8/sys/dev/usb/controller/ohci.c   (props changed)
   stable/8/sys/dev/usb/controller/ohci.h   (props changed)
   stable/8/sys/dev/usb/controller/ohci_atmelarm.c   (props changed)
   stable/8/sys/dev/usb/controller/ohci_pci.c   (props changed)
   stable/8/sys/dev/usb/controller/uhci.c   (props changed)
   stable/8/sys/dev/usb/controller/uhci.h   (props changed)
   stable/8/sys/dev/usb/controller/uhci_pci.c   (props changed)
   stable/8/sys/dev/usb/controller/usb_controller.c   (props changed)
   stable/8/sys/dev/usb/controller/uss820dci.c   (props changed)
   stable/8/sys/dev/usb/controller/uss820dci.h   (props changed)
   stable/8/sys/dev/usb/controller/uss820dci_atmelarm.c   (props changed)
   stable/8/sys/dev/usb/input/uhid.c   (props changed)
   stable/8/sys/dev/usb/input/ukbd.c   (props changed)
   stable/8/sys/dev/usb/input/ums.c   (props changed)
   stable/8/sys/dev/usb/input/usb_rdesc.h   (props changed)
   stable/8/sys/dev/usb/misc/udbp.c   (props changed)
   stable/8/sys/dev/usb/misc/udbp.h   (props changed)
   stable/8/sys/dev/usb/misc/ufm.c   (props changed)
   stable/8/sys/dev/usb/net/if_aue.c   (props changed)
   stable/8/sys/dev/usb/net/if_auereg.h   (props changed)
   stable/8/sys/dev/usb/net/if_axe.c   (props changed)
   stable/8/sys/dev/usb/net/if_axereg.h   (props changed)
   stable/8/sys/dev/usb/net/if_cdce.c   (props changed)
   stable/8/sys/dev/usb/net/if_cdcereg.h   (props changed)
   stable/8/sys/dev/usb/net/if_cue.c   (props changed)
   stable/8/sys/dev/usb/net/if_cuereg.h   (props changed)
   stable/8/sys/dev/usb/net/if_kue.c   (props changed)
   stable/8/sys/dev/usb/net/if_kuefw.h   (props changed)
   stable/8/sys/dev/usb/net/if_kuereg.h   (props changed)
   stable/8/sys/dev/usb/net/if_rue.c   (props changed)
   stable/8/sys/dev/usb/net/if_ruereg.h   (props changed)
   stable/8/sys/dev/usb/net/if_udav.c   (props changed)
   stable/8/sys/dev/usb/net/if_udavreg.h   (props changed)
   stable/8/sys/dev/usb/net/usb_ethernet.c   (props changed)
   stable/8/sys/dev/usb/net/usb_ethernet.h   (props changed)
   stable/8/sys/dev/usb/quirk/usb_quirk.c   (props changed)
   stable/8/sys/dev/usb/quirk/usb_quirk.h   (props changed)
   stable/8/sys/dev/usb/serial/u3g.c   (props changed)
   stable/8/sys/dev/usb/serial/uark.c   (props changed)
   stable/8/sys/dev/usb/serial/ubsa.c   (props changed)
   stable/8/sys/dev/usb/serial/ubser.c   (props changed)
   stable/8/sys/dev/usb/serial/uchcom.c   (props changed)
   stable/8/sys/dev/usb/serial/ucycom.c   (props changed)
   stable/8/sys/dev/usb/serial/ufoma.c   (props changed)
   stable/8/sys/dev/usb/serial/uftdi.c   (props changed)
   stable/8/sys/dev/usb/serial/uftdi_reg.h   (props changed)
   stable/8/sys/dev/usb/serial/ugensa.c   (props changed)
   stable/8/sys/dev/usb/serial/uipaq.c   (props changed)
   stable/8/sys/dev/usb/serial/ulpt.c   (props changed)
   stable/8/sys/dev/usb/serial/umct.c   (props changed)
   stable/8/sys/dev/usb/serial/umodem.c   (props changed)
   stable/8/sys/dev/usb/serial/umoscom.c   (props changed)
   stable/8/sys/dev/usb/serial/uplcom.c   (props changed)
   stable/8/sys/dev/usb/serial/usb_serial.c   (props changed)
   stable/8/sys/dev/usb/serial/usb_serial.h   (props changed)
   stable/8/sys/dev/usb/serial/uslcom.c   (props changed)
   stable/8/sys/dev/usb/serial/uvisor.c   (props changed)
   stable/8/sys/dev/usb/serial/uvscom.c   (props changed)
   stable/8/sys/dev/usb/storage/rio500_usb.h   (props changed)
   stable/8/sys/dev/usb/storage/umass.c   (props changed)
   stable/8/sys/dev/usb/storage/urio.c   (props changed)
   stable/8/sys/dev/usb/storage/ustorage_fs.c   (props changed)
   stable/8/sys/dev/usb/template/usb_template.c   (props changed)
   stable/8/sys/dev/usb/template/usb_template.h   (props changed)
   stable/8/sys/dev/usb/template/usb_template_cdce.c   (props changed)
   stable/8/sys/dev/usb/template/usb_template_msc.c   (props changed)
   stable/8/sys/dev/usb/template/usb_template_mtp.c   (props changed)
   stable/8/sys/dev/usb/ufm_ioctl.h   (props changed)
   stable/8/sys/dev/usb/usb.h   (props changed)
   stable/8/sys/dev/usb/usb_bus.h   (props changed)
   stable/8/sys/dev/usb/usb_busdma.c   (props changed)
   stable/8/sys/dev/usb/usb_busdma.h   (props changed)
   stable/8/sys/dev/usb/usb_cdc.h   (props changed)
   stable/8/sys/dev/usb/usb_compat_linux.c   (props changed)
   stable/8/sys/dev/usb/usb_compat_linux.h   (props changed)
   stable/8/sys/dev/usb/usb_controller.h   (props changed)
   stable/8/sys/dev/usb/usb_core.c   (props changed)
   stable/8/sys/dev/usb/usb_core.h   (props changed)
   stable/8/sys/dev/usb/usb_debug.c   (props changed)
   stable/8/sys/dev/usb/usb_debug.h   (props changed)
   stable/8/sys/dev/usb/usb_dev.c   (props changed)
   stable/8/sys/dev/usb/usb_dev.h   (props changed)
   stable/8/sys/dev/usb/usb_device.c   (props changed)
   stable/8/sys/dev/usb/usb_device.h   (props changed)
   stable/8/sys/dev/usb/usb_dynamic.c   (props changed)
   stable/8/sys/dev/usb/usb_dynamic.h   (props changed)
   stable/8/sys/dev/usb/usb_endian.h   (props changed)
   stable/8/sys/dev/usb/usb_error.c   (props changed)
   stable/8/sys/dev/usb/usb_generic.c   (props changed)
   stable/8/sys/dev/usb/usb_generic.h   (props changed)
   stable/8/sys/dev/usb/usb_handle_request.c   (props changed)
   stable/8/sys/dev/usb/usb_hid.c   (props changed)
   stable/8/sys/dev/usb/usb_hub.c   (props changed)
   stable/8/sys/dev/usb/usb_hub.h   (props changed)
   stable/8/sys/dev/usb/usb_if.m   (props changed)
   stable/8/sys/dev/usb/usb_ioctl.h   (props changed)
   stable/8/sys/dev/usb/usb_lookup.c   (props changed)
   stable/8/sys/dev/usb/usb_mbuf.c   (props changed)
   stable/8/sys/dev/usb/usb_mbuf.h   (props changed)
   stable/8/sys/dev/usb/usb_msctest.c   (props changed)
   stable/8/sys/dev/usb/usb_msctest.h   (props changed)
   stable/8/sys/dev/usb/usb_parse.c   (props changed)
   stable/8/sys/dev/usb/usb_pci.h   (props changed)
   stable/8/sys/dev/usb/usb_process.c   (props changed)
   stable/8/sys/dev/usb/usb_process.h   (props changed)
   stable/8/sys/dev/usb/usb_request.c   (props changed)
   stable/8/sys/dev/usb/usb_request.h   (props changed)
   stable/8/sys/dev/usb/usb_transfer.c   (props changed)
   stable/8/sys/dev/usb/usb_transfer.h   (props changed)
   stable/8/sys/dev/usb/usb_util.c   (props changed)
   stable/8/sys/dev/usb/usb_util.h   (props changed)
   stable/8/sys/dev/usb/usbdevs   (props changed)
   stable/8/sys/dev/usb/usbhid.h   (props changed)
   stable/8/sys/dev/usb/wlan/if_rum.c   (props changed)
   stable/8/sys/dev/usb/wlan/if_rumfw.h   (props changed)
   stable/8/sys/dev/usb/wlan/if_rumreg.h   (props changed)
   stable/8/sys/dev/usb/wlan/if_rumvar.h   (props changed)
   stable/8/sys/dev/usb/wlan/if_ural.c   (props changed)
   stable/8/sys/dev/usb/wlan/if_uralreg.h   (props changed)
   stable/8/sys/dev/usb/wlan/if_uralvar.h   (props changed)
   stable/8/sys/dev/usb/wlan/if_zyd.c   (props changed)
   stable/8/sys/dev/usb/wlan/if_zydfw.h   (props changed)
   stable/8/sys/dev/usb/wlan/if_zydreg.h   (props changed)
   stable/8/sys/dev/xen/netfront/   (props changed)
   stable/8/sys/dev/xen/xenpci/   (props changed)
   stable/8/sys/modules/dtrace/dtnfsclient/   (props changed)
   stable/8/sys/modules/ip6_mroute_mod/   (props changed)
   stable/8/sys/modules/ipmi/ipmi_linux/   (props changed)
   stable/8/sys/net/rtsock.c
   stable/8/sys/netgraph/bluetooth/drivers/ubt/ng_ubt.c   (props changed)
   stable/8/sys/netgraph/bluetooth/drivers/ubt/ng_ubt_var.h   (props changed)
   stable/8/sys/netgraph/bluetooth/drivers/ubtbcmfw/ubtbcmfw.c   (props changed)
   stable/8/sys/netinet/ipfw/ip_dummynet.c   (props changed)
   stable/8/sys/netinet/ipfw/ip_fw2.c   (props changed)
   stable/8/sys/netinet/ipfw/ip_fw_nat.c   (props changed)
   stable/8/sys/netinet/ipfw/ip_fw_pfil.c   (props changed)
   stable/8/sys/netipx/spx_reass.c   (props changed)
   stable/8/sys/xen/evtchn.h   (props changed)
   stable/8/sys/xen/hypervisor.h   (props changed)
   stable/8/sys/xen/xen_intr.h   (props changed)
 
 Modified: stable/8/sys/net/rtsock.c
 ==============================================================================
 --- stable/8/sys/net/rtsock.c	Thu Aug 13 09:29:52 2009	(r196174)
 +++ stable/8/sys/net/rtsock.c	Thu Aug 13 09:32:15 2009	(r196175)
 @@ -1473,7 +1473,7 @@ sysctl_rtsock(SYSCTL_HANDLER_ARGS)
  		/*
  		 * take care of routing entries
  		 */
 -		for (error = 0; error == 0 && i <= lim; i++)
 +		for (error = 0; error == 0 && i <= lim; i++) {
  			rnh = rt_tables_get_rnh(req->td->td_proc->p_fibnum, i);
  			if (rnh != NULL) {
  				RADIX_NODE_HEAD_LOCK(rnh); 
 @@ -1482,6 +1482,7 @@ sysctl_rtsock(SYSCTL_HANDLER_ARGS)
  				RADIX_NODE_HEAD_UNLOCK(rnh);
  			} else if (af != 0)
  				error = EAFNOSUPPORT;
 +		}
  		break;
  
  	case NET_RT_IFLIST:
 _______________________________________________
 svn-src-all@freebsd.org mailing list
 http://lists.freebsd.org/mailman/listinfo/svn-src-all
 To unsubscribe, send any mail to "svn-src-all-unsubscribe@freebsd.org"
 
State-Changed-From-To: open->closed 
State-Changed-By: bz 
State-Changed-When: Mon Aug 24 20:19:18 UTC 2009 
State-Changed-Why:  
Comitted to HEAD, stable/8.  Thanks a lot for reporting and testing! 

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