[netcf-devel] Why check for IFF_RUNNING in if_is_active?
Hendrik Schwartke
hendrik at os-t.de
Thu Sep 6 07:23:03 UTC 2012
Ok, that makes sense.
Obviously I have to find another way to handle my problem.
Thanks for your quick reply Laine.
On 05.09.2012 20:42, Laine Stump wrote:
> On 09/05/2012 10:45 AM, Hendrik Schwartke wrote:
>> Hi,
>>
>> I'm wondering why the IFF_RUNNING flag is checked in if_is_active.
>> Shouldn't it be enough to check only for IFF_UP?
>> My problem is that whenever I set a device up which is intentionally
>> not running (because the cable is not plugged in or because it's a tap
>> device) I got an error although everything is perfectly right.
>> So I have to write a wrapper to distinguish between "real" error
>> messages and the "cable is not inserted" error.
>>
>> Is there any reason for checking both flags I didn't notice?
> Basically because someone had a problem with the previous behavior
> displaying inconsistent results depending on whether or not
> NetworkManager was running and whether or not the interface was using DHCP.
>
> I suppose the core of this problem is that netcf has only a single flag
> (active or not active) and there are multiple different states that the
> interface could be in.
>
> Here's the commit that added the check for IFF_RUNNING. It has a bit of
> explanation, as well as a pointer to the BZ that started it all:
>
>
> commit 012e2169dfd904520ecac65553ccdd265537351f
> Author: Laine Stump<laine at redhat.com>
> Date: Tue Jul 31 19:57:59 2012 -0400
>
> Author: Laine Stump<laine at redhat.com>
> Date: Tue Jul 31 19:57:59 2012 -0400
>
> check IFF_RUNNING before considering an interface "active"
>
> This is in response to:
>
> https://bugzilla.redhat.com/show_bug.cgi?id=844578
>
> If an interface's cable is unplugged and it is configured to use dhcp
> (or if NetworkManager is running), attempts to ifup will fail, but
> netcf will later report that the interface is active. This is because
> netcf only checks the IFF_UP flag in the interface status.
>
> It makes more sense for the interface to be counted as active only if
> ifup has been successful, so this patch changes the if_is_active()
> utility function to require both IFF_UP and IFF_RUNNING be set before
> counting the interface as active.
>
> However, if an interface is configured for a static IP address *and
> NetworkManager isn't running*, ifup will succeed even when the cable
> is unplugged. So again the active status of the interface is not
> consistent with the result of ifup. To resolve this inconsistency,
> this patch makes na additional check for if_is_active() after the
> system's ifup utility successfully completes.
>
> The result is consistency between the result of ifup and the
> interface's flags in all cases.
>
>
> _______________________________________________
> netcf-devel mailing list
> netcf-devel at lists.fedorahosted.org
> https://lists.fedorahosted.org/mailman/listinfo/netcf-devel
More information about the netcf-devel
mailing list