[Freeipa-devel] [PATCH] add ethers.byname and ethers.byaddr NIS maps

Jan Cholasta jcholast at redhat.com
Wed Apr 25 09:24:28 UTC 2012


On 24.4.2012 16:57, Nalin Dahyabhai wrote:
> On Tue, Apr 24, 2012 at 01:02:44PM +0200, Jan Cholasta wrote:
>> I'm just curious, why you do this:
>>
>> default:nis-keys-format: %mregsub("%{macAddress}
>> %{fqdn}","(..[:\\\|-]..[:\\\|-]..[:\\\|-]..[:\\\|-]..[:\\\|-]..)
>> (.*)","%1")
>>
>> and not simply this:
>>
>> default:nis-keys-format: ${macAddress}
>>
>> ?
>
> Good eye.  It's because of an implementation detail of the server
> plugin: when computing entries for a NIS map, it has to be able to deal
> with the list of keys which it computes having a different number of
> items in it than the list of corresponding values.
>
> If an entry has, say, two 'fqdn' values, and three 'macAddress' values,
> then for keys "%{macAddress}" would produce three values, and for
> values, "%{fqdn} %{macAddress} would produce six, since it's generating
> all of the combinations.
>
> In that case the plugin, assuming you want to make all six values
> visible to clients, has to figure out how to match up three keys to six
> values.  It can repeat the list of keys as the second (or rightmost)
> variable changes, like this:
>    key="fqdn1", value="macAddress1 fqdn1"
>    key="fqdn2", value="macAddress1 fqdn2"
>    key="fqdn3", value="macAddress1 fqdn3"
>    key="fqdn1", value="macAddress2 fqdn1"
>    key="fqdn2", value="macAddress2 fqdn2"
>    key="fqdn3", value="macAddress2 fqdn3"
> or it can repeat the list of keys as the first (or leftmost) variable
> changes, like this:
>    key="fqdn1", value="macAddress1 fqdn1"
>    key="fqdn2", value="macAddress2 fqdn1"
>    key="fqdn3", value="macAddress1 fqdn2"
>    key="fqdn1", value="macAddress2 fqdn2"
>    key="fqdn2", value="macAddress1 fqdn3"
>    key="fqdn3", value="macAddress2 fqdn3"
> Now, if your key is the second column, that's not what you want.  If
> it's the first column, the second way actually looks right:
>    key="macAddress1", value="macAddress1 fqdn1"
>    key="macAddress2", value="macAddress2 fqdn1"
>    key="macAddress1", value="macAddress1 fqdn2"
>    key="macAddress2", value="macAddress2 fqdn2"
>    key="macAddress1", value="macAddress1 fqdn3"
>    key="macAddress2", value="macAddress2 fqdn3"
>
> The plugin's not smart enough to figure out which way is correct (and at
> the moment I can't even remember which way I ended up choosing), so the
> configuration just makes sure that the list of keys starts out at the
> same length as the list of values, and then uses the regex to strip out
> the parts we don't want.

Thanks for the detailed explanation.

>
> Revised patch attached.
>
> Cheers,
>
> Nalin

ACK.

Honza

-- 
Jan Cholasta




More information about the Freeipa-devel mailing list