Documentation of device spec list does not agree with parser code



Hi,

As far as I can see the code for parsing device interface-name lists in NetworkManagerUtils.c does not agree with the man page in NetworkManager.conf.xml.in. In particular

interface-name:IFNAME

does not support globbing. Only

interface-name:?IFNAME

does.

Here is the current code.

NMMatchSpecMatchType
nm_match_spec_interface_name (const GSList *specs, const char *interface_name)
{
        const GSList *iter;
        NMMatchSpecMatchType match = NM_MATCH_SPEC_NO_MATCH;

        g_return_val_if_fail (interface_name != NULL, NM_MATCH_SPEC_NO_MATCH);

        for (iter = specs; iter; iter = g_slist_next (iter)) {
                const char *spec_str = iter->data;
                gboolean use_pattern = FALSE;
                gboolean except;

                if (!spec_str || !*spec_str)
                        continue;

                spec_str = _match_except (spec_str, &except);

                if (   !g_ascii_strncasecmp (spec_str, MAC_TAG, STRLEN (MAC_TAG))
                    || !g_ascii_strncasecmp (spec_str, SUBCHAN_TAG, STRLEN (SUBCHAN_TAG))
                    || !g_ascii_strncasecmp (spec_str, DEVICE_TYPE_TAG, STRLEN (DEVICE_TYPE_TAG)))
                        continue;

                if (!g_ascii_strncasecmp (spec_str, INTERFACE_NAME_TAG, STRLEN (INTERFACE_NAME_TAG))) {
                        spec_str += STRLEN (INTERFACE_NAME_TAG);
                        if (spec_str[0] == '=')
                                spec_str += 1;
                        else {
                                if (spec_str[0] == '~')
                                        spec_str += 1;
                                use_pattern=TRUE;
                        }
                } else if (except)
                        continue;

                if (   !strcmp (spec_str, interface_name)
                    || (use_pattern && g_pattern_match_simple (spec_str, interface_name))) {
                        if (except)
                                return NM_MATCH_SPEC_NEG_MATCH;
                        match = NM_MATCH_SPEC_MATCH;
                }
        }
        return match;
}

What am I missing here?

Cheers,

Roger


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]