netdev
[Top] [All Lists]

Re: PROBLEM: Interface address change netlink socket problem.(Patch

To: jamal <hadi@xxxxxxxxxx>
Subject: Re: PROBLEM: Interface address change netlink socket problem.(Patch
From: Vividh Siddha <vividh@xxxxxxxxxxxxxx>
Date: Wed, 09 Oct 2002 21:23:51 -0700
Cc: netdev@xxxxxxxxxxx, "David S. Miller" <davem@xxxxxxxxxx>
References: <Pine.GSO.4.30.0210092235300.16149-100000@xxxxxxxxxxxxxxxx>
Sender: netdev-bounce@xxxxxxxxxxx
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.0.1) Gecko/20020823 Netscape/7.0
Thats true but we are working around a problem which exists in the Linux stack. Ideally when we set only a interface address, the netmask should remain the same as it was before. Also the default netmasks based on classes might not be what is set. If we set netmask as /23, then:

ifconfig eth0 10.10.10.50

will cause the netmask to be /8. The end result of all of these is correct but 
the intermediate messages can cause problems in higher layer protocols.

vividh

jamal wrote:

Moved to netdev where it belongs. Vividh in the future please post
to netdev or at least cross-post to it ... because the kernel list
FAQ says so.

In your posting you say:
Imagine a interface eth0 with address 10.10.10.10, netmask 0xffffff00
and broadcast 10.10.10.255.

For eg: if the following command is issued:
ifconfig eth0 10.10.10.50 netmask 0xffffff00 broadcast 10.10.10.255

The kernel sends the following three sets of messages on the netlink
socket:

Interface address delete: (with address 10.10.10.10)
Interface address add   : (with address 10.10.10.50)

Interface address delete: (with address 10.10.10.50)
Interface address add   : (with address 10.10.10.50)

Interface address delete: (with address 10.10.10.50)
Interface address add   : (with address 10.10.10.50)

Ideally as only the interface address is changed only one address
delete/add should be sent.

State is not maintained in user space. You change that IP address,
it actually gets deleted then a new one added. The bcast and netmask
changeto defaults  as a result; you then change the netmask and
broadcast with each requiring a call from user space. If you modify your
netlink program to print both net and broadcast address you should see
this. BTW, you MUST check for these.

Example try just:
ifconfig eth0 10.10.10.50

and after you change it try:
ifconfig eth0 10.10.10.50 netmask 0xffffff00

and then
ifconfig eth0 10.10.10.50 netmask 0xffffff00 broadcast 10.10.10.255

cheers,
jamal





<Prev in Thread] Current Thread [Next in Thread>