From owner-freebsd-net@FreeBSD.ORG Sun Mar 30 14:30:01 2008 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 7D80C106564A; Sun, 30 Mar 2008 14:30:01 +0000 (UTC) (envelope-from eugen@kuzbass.ru) Received: from www.svzserv.kemerovo.su (www.svzserv.kemerovo.su [213.184.65.80]) by mx1.freebsd.org (Postfix) with ESMTP id D4BA38FC20; Sun, 30 Mar 2008 14:30:00 +0000 (UTC) (envelope-from eugen@kuzbass.ru) Received: from www.svzserv.kemerovo.su (eugen@localhost [127.0.0.1]) by www.svzserv.kemerovo.su (8.13.8/8.13.8) with ESMTP id m2UETpPP084789; Sun, 30 Mar 2008 22:29:51 +0800 (KRAST) (envelope-from eugen@www.svzserv.kemerovo.su) Received: (from eugen@localhost) by www.svzserv.kemerovo.su (8.13.8/8.13.8/Submit) id m2UETpmP084786; Sun, 30 Mar 2008 22:29:51 +0800 (KRAST) (envelope-from eugen) Date: Sun, 30 Mar 2008 22:29:51 +0800 From: Eugene Grosbein To: Remko Lodder Message-ID: <20080330142951.GA80768@svzserv.kemerovo.su> References: <47EE42C8.3070100@quip.cz> <20080329204344.GA66910@lor.one-eyed-alien.net> <20080330072137.GA35435@svzserv.kemerovo.su> <47EF69F0.1050304@FreeBSD.org> <20080330104525.GA57135@svzserv.kemerovo.su> <9C5282E0-B44F-4A07-A606-1783D7725B5A@elvandar.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <9C5282E0-B44F-4A07-A606-1783D7725B5A@elvandar.org> User-Agent: Mutt/1.4.2.3i Cc: FreeBSD-Net mailing list , Brooks Davis , "Bruce M. Simpson" , Miroslav Lachman <000.fbsd@quip.cz> Subject: Re: 7.0 - ifconfig create is not working as expected? 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: Sun, 30 Mar 2008 14:30:01 -0000 On Sun, Mar 30, 2008 at 01:14:36PM +0200, Remko Lodder wrote: > Given that the idea is that we dont expect to get to this anytime > soon, we welcome the person who does the analysis for us so that we > might be able to fix this quicker (if possible with all the changes > involved). Here is a patch for RELENG_7. I ask Miroslav Lachman to test it. Apply: cd /usr/src/sbin/ifconfig patch < /path/to/patchfile make Test: ./ifconfig lo1 create inet 5.5.5.5 netmask 255.255.255.0 Or full-blown syntax: ./ifconfig gif0 create inet 6.6.6.6 7.7.7.7 tunnel 1.1.1.1 2.2.2.2 \ netmask 255.255.255.255 mtu 1500 link2 Index: ifclone.c =================================================================== RCS file: /home/ncvs/src/sbin/ifconfig/ifclone.c,v retrieving revision 1.3 diff -u -r1.3 ifclone.c --- ifclone.c 12 Aug 2006 18:07:17 -0000 1.3 +++ ifclone.c 30 Mar 2008 14:19:08 -0000 @@ -131,7 +131,9 @@ static DECL_CMD_FUNC(clone_create, arg, d) { - callback_register(ifclonecreate, NULL); + if (strstr(name, "vlan") == name) + callback_register(ifclonecreate, NULL); + else ifclonecreate(s, NULL); } static Index: ifconfig.c =================================================================== RCS file: /home/ncvs/src/sbin/ifconfig/ifconfig.c,v retrieving revision 1.134 diff -u -r1.134 ifconfig.c --- ifconfig.c 4 Oct 2007 09:45:41 -0000 1.134 +++ ifconfig.c 30 Mar 2008 14:22:00 -0000 @@ -247,7 +247,12 @@ if (iflen >= sizeof(name)) errx(1, "%s: cloning name too long", ifname); - ifconfig(argc, argv, NULL); + if (argc > 1) { + afp = af_getbyname(argv[1]); + if (afp != NULL) + argv[1] = NULL; + } + ifconfig(argc, argv, afp); exit(0); } errx(1, "interface %s does not exist", ifname); @@ -451,6 +456,9 @@ while (argc > 0) { const struct cmd *p; + if(*argv == NULL) + goto next; + p = cmd_lookup(*argv); if (p == NULL) { /* @@ -479,6 +487,7 @@ } else p->c_u.c_func(*argv, p->c_parameter, s, afp); } + next: argc--, argv++; }