Hello,

some further inspection reveals the following code segment (line 468, 
ifplugd.c): 

if (select(FD_SETSIZE, &qfds, NULL, NULL, &tv) < 0) {
            if (errno == EINTR)
                continue;

            daemon_log(LOG_ERR, "select(): %s", strerror(errno));
            goto finish;
        }

This means that error conditions are checked, but a timeout (return value 0) 
is not treated differently from a select() returning a specific file 
descriptor.

In this case, link beat has been logged to daemon.log as not detected (the 
interface does not even exist, actually), so the select() always times out. 

Since -M was not specified (waiting via netlink API on appearance of the 
interface), ifplugd should even fail before that:

    daemon_log(LOG_INFO, "Initialization complete, link beat %sdetected%s.", 
status == IFSTATUS_UP ? "" : "not ", use_ifmonitor ? (disabled ?
", interface disabled" : ", interface enabled") : "");
    beep(status == IFSTATUS_UP ? 0 : 1);

    if (status == IFSTATUS_UP || initial_down)
        if (action(status) < 0)
            goto finish;

This should probably be the place where ifplugd bails out since interface is 
not there.

Hope this helps,
-Malte


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to