Nicolas Droux wrote:
- If the "destination address" (as in mac_dest_update()) is used only for IP tunnels, shouldn't it be part of the plugin data for that MAC type?


It can't be transparent to Nemo because the address is passed up in
DL_NOTIFY_IND messages.

Isn't this address specific to the IP tunnels plug-in though?

No more so than unicast source addresses are specific to the Ethernet plugin. There are (or will be) three different tunneling plugins, and two of them use destination addresses. In the future, I can see other types of MACs (including different kinds of tunneling) that have this concept, so I don't think it's really specific to IP tunnels.

If so, your statement would imply that the introduction of new notifications types would require a modification of the framework itself,

That's true, since all notifications are requested, generated, and distributed by the framework.

even for notifications that are plug-in specific. Is this a correct statement?

I think so. I don't see a convenient way to generically inject notifications into GLDv3 all the way from the mac module up to individual DLPI STREAMS in dld.

- shouldn't there be a versioning mechanism between the plugins and the drivers that depend on that plugin? I.e. the change of an interface provided by one plugin shouldn't affect drivers using different plug-ins.


I don't understand this comment.  Drivers don't use plugin interfaces at
all.  Can you provide an example or be more specific?

I'm talking about the format of the plugin data that is exchanged between drivers and plugins. The format of that data is defined by the plugin. What if a new version of the plugin requires a new format for that data, shouldn't there be a versioning mechanism to track the versions of individual plugins?

Ah, I see what you're saying.  It seems like that's specific to a given
plugin's data format.

- it seems that GLDv3 could implicitly load plugin modules on demand according to the plugin type specified by the driver instead of relying on the drivers to be compiled with an explicit dependency. This would avoid locking us in with these plugin module names since they'll need to be part of the public MAC interface.


This is something that I investigated when writing the design document.
If there's an easy way to do this, then I'd be up for implementing it.
What would be the method?

How about something like this: a new module type could be introduced (e.g. "mac/{ether, ib, ...}"). At MAC driver registration time, the name of the plugin is passed by the driver (e.g. through the m_type_ident field of mac_register_t). The MAC layer can modload() the plugin module at that time, and holds it until the MAC unregisters.

This sounds feasible, and I like the idea of having these be dynamically loaded. Unless there aren't issues with this approach that others can think of, I'll modify the document to reflect that.

-Seb
_______________________________________________
networking-discuss mailing list
[email protected]

Reply via email to