On Sun, Oct 07, 2012 at 12:57:42PM +1300, Andrew Thompson wrote: > On 7 October 2012 06:28, Luigi Rizzo <rizzo_at_iet.unipi.it> wrote: > > Hi, > > in order to control some netmap feature (namely, which interfaces > > are attached to VALE switches), i would considering the use of > > a sysctl interface triggering a sysctl-proc, something of the form > > > > dev.netmap.switch.xyz=em0 ix1 > > dev.netmap.switch.foo=ix2 re0 > > Is it possible to use ifconfig? If a VALE switch was a pseudo > interface and you added real interfaces to it then it would be > consistent with the current networking fu. Good point, thanks for mentioning this: <rant> Could be done, but I consider the ifconfig one of the ugliest configuration mechanisms we have in FreeBSD so I'd rather not contribute to that. src/sbin/ifconfig/ has over 11K of C source, most of it just in charge of filling some obscure ioctl argument with limited error checking. For instance, ifbridge.c has 700 lines of code defines 38 commands or variants. All the code does is convert command line into one of the structs below defining the user-kernel interface. Most of them are used 1-2 times in total in the entire userland code (in ifconfig and bsnmpd/modules/snmp_bridge) struct ifdrv struct ifbifconf struct ifbreq struct ifbaconf struct ifbareq struct ifbropreq struct ifbrparam All the processing is done in the kernel. Performance is not a concern given the low frequency of these actions. What is the point of this complication ? One could just do things like sysctl dev.bridge.br3.priorit=16384 sysctl dev.bridge.br3.addm=re0 ... (and the like) with no complications on the kernel side and huge simplifications on the userland side and kernel-user ABI. Replace sysctl with sysfs or other mechanism of choice. ifieee80211 is even worse -- over 5000 lines of code, 153 between commands and arguments, and 31 different parameters: struct ieee80211_ath_ie struct ieee80211_channel struct ieee80211_chanswitch_req struct ieee80211_clone_params struct ieee80211_country_ie struct ieee80211_devcaps_req struct ieee80211_ie_htcap struct ieee80211_ie_htinfo struct ieee80211_meshconf_ie struct ieee80211_mimo_info struct ieee80211_regdomain struct ieee80211_regdomain_req struct ieee80211_roamparam struct ieee80211_roamparams_req struct ieee80211_scan_req struct ieee80211_tdma_param struct ieee80211_txparam struct ieee80211_txparams_req struct ieee80211_wme_acparams struct ieee80211_wme_info struct ieee80211_wme_param struct ieee80211req struct ieee80211req_chaninfo struct ieee80211req_chanlist struct ieee80211req_key struct ieee80211req_maclist struct ieee80211req_mesh_route struct ieee80211req_mlme struct ieee80211req_scan_result struct ieee80211req_sta_info struct ieee80211req_sta_req cheers luigi > Andrew > _______________________________________________ > freebsd-current_at_freebsd.org mailing list > http://lists.freebsd.org/mailman/listinfo/freebsd-current > To unsubscribe, send any mail to "freebsd-current-unsubscribe_at_freebsd.org"Received on Sun Oct 07 2012 - 08:23:18 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:31 UTC