7.0 - ifconfig create is not working as expected?

Bruce M. Simpson bms at FreeBSD.org
Sun Mar 30 03:22:44 PDT 2008


Eugene Grosbein wrote:
> On Sat, Mar 29, 2008 at 03:43:44PM -0500, Brooks Davis wrote:
>
>   
>>> I was using following command in FreeBSD 6.2:
>>> # ifconfig lo1 create inet 172.16.16.2 netmask 255.255.255.0
>>> In FreeBSD 7.0 I got an error:
>>> # ifconfig lo1 create inet 172.16.16.2 netmask 255.255.255.0
>>> ifconfig: inet: bad value
>>> But it is working splitted in to two commands:
>>> # ifconfig lo1 create
>>> # ifconfig lo1 inet 172.16.16.2 netmask 255.255.255.0
>>> Is this expected behavior or should I file a PR?
>>>       
>> This expected.  There's some argument it's wrong, but filing a PR is
>> unlikely to cause it to change any time soon.
>>     
>
> Why? The same with creating gif-tunnel, now I need to invoke ifconfig
> twice, once for 'create' and once for other tunnel parameters,
> whereas for RELENG_6 this works: 'ifconfig gif0 create tunnel 1.1.1.1 2.2.2.2' 
>
> This breaks existing setups/scripts. This is POLA issue.
> Why was it broken?
>   

I don't know why or how this has happened, however, given the complexity 
of the command line grammar which ifconfig is expected to parse, our 
choices are limited, unless someone(tm) is willing to come along and 
implement a full parser in ifconfig.

I investigated this some years ago and frankly didn't get anywhere, one 
of the constraints was that Sam wanted to modularize the ifconfig code, 
with a view to future dynamic loading -- as such, this places 
restrictions on the kind of parser which can be used.

There is valid argument that we should not do this, as ifconfig is a 
tool which sits in the base system, and should be kept simple and 
therefore small.

On the other hand, there's also the argument that as ifconfig's syntax 
has grown considerably over the years, that we should go ahead and add a 
parser anyway.

In the absence of a full-blown parser, I'm comfortable with "ifconfig 
<cloner> create" being a separate operation, which preferably throws an 
error if other commands are included with it, and understand why these 
limitations apply.

cheers
BMS


More information about the freebsd-net mailing list