From hans@lambermont.dyndns.org  Tue Mar 28 13:44:42 2006
Return-Path: <hans@lambermont.dyndns.org>
Received: from mx1.FreeBSD.org (mx1.freebsd.org [216.136.204.125])
	by hub.freebsd.org (Postfix) with ESMTP id 6A2FB16A400
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 28 Mar 2006 13:44:42 +0000 (UTC)
	(envelope-from hans@lambermont.dyndns.org)
Received: from lambermont.dyndns.org (lambermont.dyndns.org [82.93.47.245])
	by mx1.FreeBSD.org (Postfix) with ESMTP id B27AD43D4C
	for <FreeBSD-gnats-submit@freebsd.org>; Tue, 28 Mar 2006 13:44:41 +0000 (GMT)
	(envelope-from hans@lambermont.dyndns.org)
Received: by lambermont.dyndns.org (Postfix, from userid 1001)
	id C315814DA01; Tue, 28 Mar 2006 15:44:40 +0200 (CEST)
Received: from gagh.intra.aramiska.net (norsk [81.246.41.162])
	by lambermont.dyndns.org (Postfix) with ESMTP id 8E4D614DA01
	for <hans@lambermont.dyndns.org>; Tue, 28 Mar 2006 15:35:20 +0200 (CEST)
Received: by gagh.intra.aramiska.net (Postfix, from userid 1001)
	id 094F4EBCC4; Tue, 28 Mar 2006 14:31:50 +0200 (CEST)
Message-Id: <20060328123150.094F4EBCC4@gagh.intra.aramiska.net>
Date: Tue, 28 Mar 2006 14:31:50 +0200 (CEST)
From: Hans Lambermont <hans@lambermont.dyndns.org>
Reply-To: Hans Lambermont <hans@lambermont.dyndns.org>
To: FreeBSD-gnats-submit@freebsd.org
Cc: Hans Lambermont <hans@lambermont.dyndns.org>
Subject: patch for mrouted subnet mask checking on interface aliases
X-Send-Pr-Version: 3.113
X-GNATS-Notify:

>Number:         95041
>Category:       bin
>Synopsis:       [patch] for mrouted(8) subnet mask checking on interface aliases
>Confidential:   no
>Severity:       serious
>Priority:       low
>Responsible:    maxim
>State:          closed
>Quarter:        
>Keywords:       
>Date-Required:  
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Tue Mar 28 13:50:11 GMT 2006
>Closed-Date:    Sun Jul 16 06:54:01 GMT 2006
>Last-Modified:  Sun Jul 16 06:54:01 GMT 2006
>Originator:     Hans Lambermont
>Release:        FreeBSD 6.0-BETA2 i386
>Organization:
Sangine
>Environment:
System: FreeBSD gagh.intra.aramiska.net 6.0-BETA2 FreeBSD 6.0-BETA2 #5: Thu Nov 3 14:05:37 CET 2005 hans@gagh.intra.aramiska.net:/usr/obj/new/usr/src/sys/GAGH i386
>Description:
mrouted calls the inet_valid_subnet function with wrong subnet mask for
interface aliases.
>How-To-Repeat:
fxp1: flags=8b43<UP,BROADCAST,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
        options=b<RXCSUM,TXCSUM,VLAN_MTU>
        inet 172.31.254.253 netmask 0xfffffffc broadcast 172.31.254.255
        inet 10.0.0.3 netmask 0xfffffff8 broadcast 10.0.0.7

generates :

mrouted[904]: warning - test fxp1, addr(172.31.254.253) mask(255.255.255.252) subnet(172.31.254.252)
mrouted[904]: warning - test fxp1, addr(10.0.0.3) mask(255.255.255.252) subnet(10.0.0.0)
mrouted[904]: warning - ignoring fxp1, has invalid address (10.0.0.3) and/or mask (255.255.255.252)

the 10.0.0.3 entries' mask is checked against the 172.31.254.253' mask.
>Fix:
--- config.c.org	Tue Mar 28 14:15:34 2006
+++ config.c	Tue Mar 28 14:17:37 2006
@@ -105,16 +105,16 @@
 	 * valid subnet number, or whose address is of the form {subnet,0}
 	 * or {subnet,-1}.
 	 */
-	if (ioctl(udp_socket, SIOCGIFNETMASK, (char *)&ifr) < 0)
-	    log(LOG_ERR, errno, "ioctl SIOCGIFNETMASK for %s", ifr.ifr_name);
-	mask = ((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr.s_addr;
+	if (ioctl(udp_socket, SIOCGIFNETMASK, (char *)ifrp) < 0)
+	    log(LOG_ERR, errno, "ioctl SIOCGIFNETMASK for %s", ifrp->ifr_name);
+	mask = ((struct sockaddr_in *)&ifrp->ifr_addr)->sin_addr.s_addr;
 	subnet = addr & mask;
 	if (!inet_valid_subnet(subnet, mask) ||
 	    addr == subnet ||
 	    addr == (subnet | ~mask)) {
 	    log(LOG_WARNING, 0,
 		"ignoring %s, has invalid address (%s) and/or mask (%s)",
-		ifr.ifr_name, inet_fmt(addr, s1), inet_fmt(mask, s2));
+		ifrp->ifr_name, inet_fmt(addr, s1), inet_fmt(mask, s2));
 	    continue;
 	}
 
>Release-Note:
>Audit-Trail:

From: Maxim Konovalov <maxim@macomnet.ru>
To: Hans Lambermont <hans@lambermont.dyndns.org>
Cc: bug-followup@freebsd.org
Subject: bin/95041
Date: Sun, 16 Apr 2006 01:41:46 +0400 (MSD)

 Hi Hans,
 
 I'd like to suggest a more aggressive patch from NetBSD which converts
 all SIOCGIFCONF ioctl()'s to getifaddrs(3) call.  It would be very
 nice if you test it.
 
 fetch http://maxim.int.ru/stuff/mrouted.diff
 
 -- 
 Maxim Konovalov

From: hans@lambermont.dyndns.org (Hans Lambermont)
To: Maxim Konovalov <maxim@macomnet.ru>
Cc: bug-followup@freebsd.org
Subject: Re: bin/95041
Date: Wed, 17 May 2006 16:49:51 +0200

 Maxim Konovalov wrote:
 
 > I'd like to suggest a more aggressive patch from NetBSD which converts
 > all SIOCGIFCONF ioctl()'s to getifaddrs(3) call.  It would be very
 > nice if you test it.
 
 Sorry for my late test. This patch also works, no more 'ignoring fxp1'.
 
 regards,
    Hans Lambermont
 
 ps. I still get this : "mrouted: /etc/mrouted.conf: 10.0.0.3 is not a
 configured interface near line 20". The 10.0.0.3 is an alias of fxp1 :
 fxp1: flags=8a43<UP,BROADCAST,RUNNING,ALLMULTI,SIMPLEX,MULTICAST> mtu 1500
         options=b<RXCSUM,TXCSUM,VLAN_MTU>
         inet 172.31.254.253 netmask 0xfffffffc broadcast 172.31.254.255
         inet6 fe80::202:b3ff:fe5f:f581%fxp1 prefixlen 64 scopeid 0x2
         inet 10.0.0.3 netmask 0xfffffff8 broadcast 10.0.0.7
         ether 00:02:b3:5f:f5:81
         media: Ethernet autoselect (100baseTX <full-duplex>)
         status: active
 But that's a whole different story :)

From: Maxim Konovalov <maxim@macomnet.ru>
To: Hans Lambermont <hans@lambermont.dyndns.org>
Cc: bug-followup@freebsd.org
Subject: Re: bin/95041
Date: Wed, 17 May 2006 21:08:19 +0400 (MSD)

 [...]
 >  Sorry for my late test. This patch also works, no more 'ignoring fxp1'.
 
 Thank you very much for testing, Hans!  Much appreciated.
 
 -- 
 Maxim Konovalov
State-Changed-From-To: open->patched 
State-Changed-By: maxim 
State-Changed-When: Wed May 17 18:41:41 UTC 2006 
State-Changed-Why:  
Committed to HEAD. 


Responsible-Changed-From-To: freebsd-bugs->maxim 
Responsible-Changed-By: maxim 
Responsible-Changed-When: Wed May 17 18:41:41 UTC 2006 
Responsible-Changed-Why:  
MFC reminder and feedbacks trap. 

http://www.freebsd.org/cgi/query-pr.cgi?pr=95041 
State-Changed-From-To: patched->closed 
State-Changed-By: maxim 
State-Changed-When: Sun Jul 16 06:53:45 UTC 2006 
State-Changed-Why:  
Merged to RELENG_6. 

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