One question that has frequently been raised in previous is: "why don't we create many, if not all, of our IP tunables to be per-interface?"
At least most of the tunables listed in 'ndd -get /dev/ip \?' look like they should really be tuned per-interface, but we instead have the global tunable for the entire IP module". The ipadm command discussed earlier has the facility to set/get these tunables per interface, but when we start thinking bout the issue of ndd compatibility, one issue that came up in hallway discussion: if we have a per-interface version of some prop (say ip_icmp_err_interval or ip_send_redirects), and the value for that prop has been set to different value for each interface using ipadm, what should '/sbin/ndd -get ..' print for that prop? some possibilities that came to mind: 1. remove the support from ndd and support it only in ipadm- this solution provides no compatibility at all, and would totally break any existing script that uses ndd. 2. change the output of 'ndd -get /dev/ip <prop>'- instead of printing a single int, it will have to print something like (<intf>, <value>) pairs. This is also not ideal, since the output of ndd is affected, and any script that was parsing this prop would now be affected. 3. provide per-interface prop support in ipadm and leave the "global" setting alone. In addition to complicating our kernel tremendously, I don't even see how this would work. E.g. if the "prop" is some thing like a rate-limit parameter, and the value is different for each interface, then what would the global value be? 4. dont provide per-interface props in ipadm when the prop is already there in ndd (not a good solution- this makes ndd Stable through some sort of Common Law). None of these solutions is ideal, but I am thinking that #2 may be the best-of-the-bad.. thoughts? --Sowmini
