* [gentoo-dev] Proposal: networking startup script rewrite @ 2003-10-13 18:56 Michael J. Cohen 2003-10-13 22:09 ` Stroller ` (2 more replies) 0 siblings, 3 replies; 5+ messages in thread From: Michael J. Cohen @ 2003-10-13 18:56 UTC (permalink / raw To: gentoo-dev After wrestling with our current net implementation to get bridged interfaces and vlans working, which ended in me just setting up things in local.start, I figured a rewrite of our network scripts is in order. I have made a primitive version of the rewrite available here: http://325i.org/proposed-net-replacement It is useless in its current state and only provided as an example. The reason for this rewrite is twofold: ease of configuration and ease of maintenance. Here are a few of my ideas for the evolution of this currently primitive rewrite: * all networking related configuration should take place in /etc/conf.d/net, thus eliminating /etc/conf.d/iptables and such * bringing interfaces up and down should be handled by one script that recognizes all possible up and down configurations of an interface, for example, 802.1[d,q] (bridge,vlan), netfilter, dhcp, bootp.. * configuration of iptables, ipsec, routing, etc should be handled by the up/ down script calling the appropriate /etc/init.d scripts with the appropriate arguments. these scripts would have to parse /etc/conf.d/net or rely on some of the functions in /etc/init.d/net to parse it if the user should decide to start/restart/reload a script individually If anyone has any input, please feel free to speak your mind. I would love to see gentoo become the easiest distro to configure network interfaces for *any* and *all* possible configurations, and I feel that this is the first step to achieve that goal. ------ Michael J. Cohen -- gentoo-dev@gentoo.org mailing list ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [gentoo-dev] Proposal: networking startup script rewrite 2003-10-13 18:56 [gentoo-dev] Proposal: networking startup script rewrite Michael J. Cohen @ 2003-10-13 22:09 ` Stroller [not found] ` <D1EAAB31-FDC9-11D7-BA49-000A95795F3E@stellar.eclipse.co.uk> 2003-10-14 15:21 ` William Hubbs 2 siblings, 0 replies; 5+ messages in thread From: Stroller @ 2003-10-13 22:09 UTC (permalink / raw To: gentoo-dev On 13 Oct 2003, at 7:56 pm, Michael J. Cohen wrote: > After wrestling with our current net implementation to get bridged > interfaces > and vlans working, which ended in me just setting up things in > local.start, I > figured a rewrite of our network scripts is in order. > > I have made a primitive version of the rewrite available here: > http://325i.org/proposed-net-replacement > > It is useless in its current state and only provided as an example. Michael, I'm not really sure what you regard as the failings of the current /init.d/net configuration. I have to say that I spent a couple of days struggling with it myself, and although I did whine about it at the time (see my postings <http://tinyurl.com/qsjh>) the upshot is that I rather like it the way it is. I'd agree that if a script to call `brctl` appropriately was installed by net-misc/bridge-utils then it would make configuration a lot easier, but this is a simple addition to a single package, rather than a rewrite of the whole framework. I really would like to see such an inclusion, considering that the bridging code is, I believe, incorporated into the upcoming 2.6. Bridging works fine here & fairly seamlessly with the current framework. I found that everything fell into place once I moved /etc/conf.d/net to /etc/conf.d/net.eth0 & /etc/conf.d/net.eth1, so that it's contents (particularly with respect to gateways) are ignored by my /etc/conf.d/net.br0 script. Not much in addition is required to get everything up & running - I would have been glad to provide my scripts, if I had seen your posting to -user. I don't know much (erm... well, anything) about VLANs, so I'm probably missing some of your reasoning against the current system. Actually, I don't know much about anything, so maybe you could explain (like an RFC or a GLEP, maybe?), listing the problems of the current system & how your solution would resolve them..? I'm sorry if I seem biased or antagonistic, but really don't like the idea of uniting the network scripts in anyway like you describe. I may have struggled with them myself, but that's only because I'm so incompetent - I got there in the end. I once tried parsing one of Mandrake's network initialisation scripts, but floundered wildly - with Gentoo you know intuitively to look for iptables stuff in /etc/conf.d/iptables and so on. The only improvements I'd no ask for in the init scripts are more commenting - I'm firmly of the school that believes in 2 lines of comments for every line of code. I'd like to see all code human-readable for a newbie to the language. Stroller. -- gentoo-dev@gentoo.org mailing list ^ permalink raw reply [flat|nested] 5+ messages in thread
[parent not found: <D1EAAB31-FDC9-11D7-BA49-000A95795F3E@stellar.eclipse.co.uk>]
* Re: [gentoo-dev] Proposal: networking startup script rewrite [not found] ` <D1EAAB31-FDC9-11D7-BA49-000A95795F3E@stellar.eclipse.co.uk> @ 2003-10-14 2:17 ` Michael J. Cohen 2003-10-14 14:09 ` Stroller 0 siblings, 1 reply; 5+ messages in thread From: Michael J. Cohen @ 2003-10-14 2:17 UTC (permalink / raw To: gentoo-dev > I'm not really sure what you regard as the failings of the current > /init.d/net configuration. I have to say that I spent a couple of days > struggling with it myself, and although I did whine about it at the > time (see my postings <http://tinyurl.com/qsjh>) the upshot is that I > rather like it the way it is. Having /etc/init.d/net.eth[1,2,..] installed by the user does not mean that it is automagically updated with a new install or with etc-update. only basic configuration is achieved with the current setup. etc-updating 99 files is a pain, but it often happens when upgrading baselayout, etc. If a user wipes out his configs for iptables etc by overwriting accidentally, he is in a bind. However if we do not provide a / etc/conf.d/net and only a /etc/conf.d/net.sample; this is allievated. > I'd agree that if a script to call `brctl` appropriately was installed > by net-misc/bridge-utils then it would make configuration a lot easier, > but this is a simple addition to a single package, rather than a > rewrite of the whole framework. I really would like to see such an > inclusion, considering that the bridging code is, I believe, > incorporated into the upcoming 2.6. Currently, there are several unrelated scripts for each userspace networking tool. iptables, (your proposed bridge-utils), ipsec... This is a bit backwards, and it relies on the initscripts' ability to order correctly. If we load net as one script, we know exactly what is going on and in what order and thus might be able to speed up booting by backgrounding processes that are known to potentially take time. The new system would most likely call the related /etc/init.d/bridge script or similar in order to set things up, rather than invoking brctl directly. This would save some headaches with updating the script every time we package up some new network tool. > Bridging works fine here & fairly seamlessly with the current > framework. I found that everything fell into place once I moved > /etc/conf.d/net to /etc/conf.d/net.eth0 & /etc/conf.d/net.eth1, so that > it's contents (particularly with respect to gateways) are ignored by my > /etc/conf.d/net.br0 script. Not much in addition is required to get > everything up & running - I would have been glad to provide my scripts, > if I had seen your posting to -user. What about wireless + roaming, advanced routing/bridging, ipsec, vpns, vlans, pppoe... all of these things either are not supported or are broken up into tiny bits of configuration files everywhere. It would be much easier if we had one manual with plenty of examples and one configuration file for people to edit. Not only is it easier on the developers, but it is easier on the user for updates and for configuration. The user no longer needs to hunt down where he made what change to what interface in what file. > I don't know much (erm... well, anything) about VLANs, so I'm probably > missing some of your reasoning against the current system. Actually, I > don't know much about anything, so maybe you could explain (like an RFC > or a GLEP, maybe?), listing the problems of the current system & how > your solution would resolve them..? It was mentioned to me that it was quite challenging to add VLAN suport into the current net scripts. > I'm sorry if I seem biased or antagonistic, but really don't like the > idea of uniting the network scripts in anyway like you describe. I may > have struggled with them myself, but that's only because I'm so > incompetent - I got there in the end. I once tried parsing one of > Mandrake's network initialisation scripts, but floundered wildly - with > Gentoo you know intuitively to look for iptables stuff in > /etc/conf.d/iptables and so on. Seems like it would make more sense to me if /etc/conf.d/net was your one stop shop for all your networking needs. > The only improvements I'd no ask for in the init scripts are more > commenting - I'm firmly of the school that believes in 2 lines of > comments for every line of code. I'd like to see all code > human-readable for a newbie to the language. Agreed. sometimes 5 or 6 is warranted for things like sed. :) ------ Michael -- gentoo-dev@gentoo.org mailing list ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [gentoo-dev] Proposal: networking startup script rewrite 2003-10-14 2:17 ` Michael J. Cohen @ 2003-10-14 14:09 ` Stroller 0 siblings, 0 replies; 5+ messages in thread From: Stroller @ 2003-10-14 14:09 UTC (permalink / raw To: gentoo-dev [-- Attachment #1: Type: text/plain, Size: 5323 bytes --] Having not dug around in the net startup scripts either deeply or recently, I'm not qualified to comment on all your points, but I'll respond to the ones that I can. On 14 Oct 2003, at 3:17 am, Michael J. Cohen wrote: > > etc-updating 99 files is a pain, but it often happens when upgrading > baselayout, etc. If a user wipes out his configs for iptables etc by > overwriting accidentally, he is in a bind. However if we do not > provide a / > etc/conf.d/net and only a /etc/conf.d/net.sample; this is allievated. Yes, I much prefer this format - perhaps it would be extreme or convoluted to have every configuration file provided as config.example, but I would love to see Gentoo standardising on it for all files that the user is likely to change, at least. >> I'd agree that if a script to call `brctl` appropriately was installed >> by net-misc/bridge-utils then it would make configuration a lot >> easier... > > Currently, there are several unrelated scripts for each userspace > networking > tool. iptables, (your proposed bridge-utils), ipsec... Well, my "proposed" bridge-utils isn't "proposed" - it's in the Portage tree. It is the ebuild for "brctl" and the other user-space Bridging utilities. > The new system would most likely call the related /etc/init.d/bridge > script or > similar in order to set things up, rather than invoking brctl > directly... Erm... well, I rather gathered that the idea of all the separate scripts in /etc/init.d/ was that they could be called independently. In this way they can be added to different runlevels or restarted by the administrator after configuration changes; if one script relies on another there is the "depends" declaration. Would your /etc/init.d/bridge script be safe to call separately like that..? I agree that the `brctl` stuff should not be in the main network scripts. I've attached a copy of my *extremely tatty* /etc/init.d/net.br0 script, so that you can see that this can be done fairly elegantly within the current framework. I just copied my default runlevel to /etc/runlevels/bridge, removed the existing eth0 & eth1 from that runlevel & added net.br0, so I can switch between them at will. Sorry to harp on about it, but if a (much tidier) version of this were distributed with net-misc/bridge-utils then there would be no need at all for the base networking init system to refer to bridging at all; I believe this is much neater for users who are not interested in bridging. > This > would save some headaches with updating the script every time we > package up > some new network tool. Hmmn... y'see I see smaller scripts as easier to maintain. If one developer wants to change (say) the way that wireless LAN cards behave at init, he simply edits that script without having to know about how bridges behave, or risking fouling up that behavior. Of course, if wireless bridges require special cases, then that's a job for the bridging maintainers (whoever they may be). > What about wireless + roaming, advanced routing/bridging, ipsec, vpns, > vlans, > pppoe... all of these things either are not supported or are broken up > into > tiny bits of configuration files everywhere. It would be much easier > if we > had one manual with plenty of examples and one configuration file for > people > to edit. Not only is it easier on the developers, but it is easier on > the > user for updates and for configuration. The user no longer needs to > hunt > down where he made what change to what interface in what file. I disagree. I prefer small configuration files; I find smaller files easier to parse & to deal with than larger ones. YMMV. Locating the appropriate configuration file is simply a matter of `ls /etc/conf.d`. For the developers, I would have thought the same applied - they can edit the notworking file they're interested in without risking b0rking up anything else. I see the current seup as good modularity, but I appreciate this is a matter of preference. >> I don't know much (erm... well, anything) about VLANs, so I'm probably >> missing some of your reasoning against the current system... > > It was mentioned to me that it was quite challenging to add VLAN > suport into > the current net scripts. Ok... if you say so. But I don't know why. Would it be easier to add VLAN support to a single net-startup script than to the present setup..? Can you explain why, please..? >> .... I once tried parsing one of >> Mandrake's network initialisation scripts, but floundered wildly - >> with >> Gentoo you know intuitively to look for iptables stuff in >> /etc/conf.d/iptables and so on. > > Seems like it would make more sense to me if /etc/conf.d/net was your > one stop > shop for all your networking needs. I forgot to explain the reason I had problems with the Mandrake network script I mentioned - because it was so damn big! There were pages of it! On that occasion I was only looking to see how the PPP startup worked - all the pages of Ethernet (and presumably VLAN &c) configuration just confused me impossibly. I now use Ethernet - I have no desire to see PPP options in my configuration scripts. At present /etc/conf.d/ is your one stop shop for all your networking needs - and it's split neatly into manageable departments. Stroller. [-- Attachment #2: net.br0 --] [-- Type: application/octet-stream, Size: 5423 bytes --] #!/sbin/runscript # Joe Stroller's bridge init.d script # Blatantly hacked from Gentoo Inc's /etc/init.d/net.eth0 GPL v2 licence # Config in /etc/conf.d/net # but note changes to "gateway=" definition # For pcmcia users. note that pcmcia must be added to the same # runlevel as the net.* script that needs it. depend() { use pcmcia } checkconfig() { if [ ! -x "$(which brctl)" ] then eerror "It might help if you emerged bridge-utils. I hope you / remembered to patch your kernel." return 1 fi } start() { checkconfig || return 1 local iface_args="$(eval echo \$\{iface_${IFACE}\})" local retval=0 ebegin "Bringing ${IFACE} up" # read from /etc/config.d/net which physical intefaces # are associated with this bridge local br_physicals="$(eval echo \$\{${IFACE}_interfaces\})" # we allocate IP address to bridge virtual iface, # not to physical interfaces for br_if in ${br_physicals} do echo -e "\tinitialising physical interface ${br_if} to IP 0.0.0.0" ifconfig ${br_if} 0.0.0.0 done # create a bridge and assign the Ethernet interfaces to it echo -e "\tcreating virtual bridge interface ${IFACE} (addbr command)" brctl addbr ${IFACE} for br_if in ${br_physicals} do brctl addif ${IFACE} ${br_if} echo -e "\tassigning physical interface ${br_if} to ${IFACE} (addif command)" done echo -e "\tfinally, bringing bridge up with:" echo -e "\t ifconfig ${IFACE} ${iface_args} " # finally bring the bridge up /sbin/ifconfig ${IFACE} ${iface_args} >/dev/null || { retval=$? eend ${retval} "Failed to bring ${IFACE} up" return ${retval} } # Might have to remove this next bit # - it probably needs to wait 30 seconds before testing # ifconfig do not always return failure .. /sbin/ifconfig ${IFACE} &> /dev/null || { retval=$? eend ${retval} "Failed to bring ${IFACE} up" return ${retval} } eend 0 # I'm really not sure if we want aliases on our bridge, # so I'm just leaving this here for the moment. # if [ -n "$(eval echo \$\{alias_${IFACE}\})" ] then local x="" local num=0 local aliasbcast="" local aliasnmask="" ebegin " Adding aliases" for x in $(eval echo \$\{alias_${IFACE}\}) do aliasbcast="$(eval echo \$\{broadcast_${IFACE}\} \| awk \'\{ print \$$((num + 1)) \}\')" if [ -n "${aliasbcast}" ] then aliasbcast="broadcast ${aliasbcast}" fi aliasnmask="$(eval echo \$\{netmask_${IFACE}\} \| awk \'\{ print \$$((num + 1)) \}\')" if [ -n "${aliasnmask}" ] then aliasnmask="netmask ${aliasnmask}" fi ebegin " ${IFACE}:${num}" /sbin/ifconfig ${IFACE}:${num} ${x} \ ${aliasbcast} ${aliasnmask} >/dev/null num=$((num + 1)) eend 0 done save_options "alias" "$(eval echo \$\{alias_${IFACE}\})" fi # I don't need IP v6 right now, so i'm disabling it. # # if [ -n "$(eval echo \$\{inet6_${IFACE}\})" ] # then # local x="" # ebegin " Adding inet6 addresses" # for x in $(eval echo \$\{inet6_${IFACE}\}) # do # ebegin " ${IFACE} inet6 add ${x}" # /sbin/ifconfig ${IFACE} inet6 add ${x} >/dev/null # eend 0 # done # save_options "inet6" "$(eval echo \$\{inet6_${IFACE}\})" # fi # Checks through the list of gateways & sees if any apply to this ${IFACE} # # for gateway in ${gateways} # do if [ -n "${gateway}" ] && [ "${gateway%/*}" = "${IFACE}" ] then ebegin " Setting default gateway" /sbin/route add default gw ${gateway#*/} dev ${gateway%/*} \ netmask 0.0.0.0 metric 1 >/dev/null || { local error=$? ifconfig ${IFACE} down &>/dev/null eend ${error} "Failed to bring ${IFACE} up" stop return ${error} } eend 0 fi # done # Enabling rp_filter causes wacky packets to be auto-dropped by # the kernel if [ -e /proc/sys/net/ipv4/conf/${IFACE}/rp_filter ] then echo 1 > /proc/sys/net/ipv4/conf/${IFACE}/rp_filter fi } stop() { local myalias="$(get_options alias)" ebegin "Bringing ${IFACE} down" # # Also down the inet6 interfaces # local myinet6="$(get_options inet6)" # if [ -n "${myinet6}" ] # then # local x="" # for x in ${myinet6} # do # /sbin/ifconfig ${IFACE} inet6 del ${x} >/dev/null # done # fi # Do some cleanup in case the amount of aliases change if [ -n "${myalias}" ] then local x="" local num=0 for x in ${myalias} do /sbin/ifconfig ${IFACE}:${num} down >/dev/null num=$((num + 1)) done fi # read from /etc/config.d/net which physical intefaces # are associated with this bridge local br_physicals="$(eval echo \$\{${IFACE}_interfaces\})" # Remove physical interface from bridge virtual interface for br_if in ${br_physicals} do echo -e "\tdisassociating ${br_if} from ${IFACE} (delif command)" brctl delif ${IFACE} ${br_if} done # Actually bring the bridge down echo -e "\tactually ifconfig ${IFACE} down" /sbin/ifconfig ${IFACE} down >/dev/null # Bring interfaces down, too for br_if in ${br_physicals} do echo -e "\talso ifconfig ${br_if} down" ifconfig ${br_if} down done # Night night! echo -e "\tfinally: Bye! Bye! (delbr ${IFACE})" brctl delbr ${IFACE} eend 0 } [-- Attachment #3: Type: text/plain, Size: 37 bytes --] -- gentoo-dev@gentoo.org mailing list ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [gentoo-dev] Proposal: networking startup script rewrite 2003-10-13 18:56 [gentoo-dev] Proposal: networking startup script rewrite Michael J. Cohen 2003-10-13 22:09 ` Stroller [not found] ` <D1EAAB31-FDC9-11D7-BA49-000A95795F3E@stellar.eclipse.co.uk> @ 2003-10-14 15:21 ` William Hubbs 2 siblings, 0 replies; 5+ messages in thread From: William Hubbs @ 2003-10-14 15:21 UTC (permalink / raw To: gentoo development Hi Michael and all, I am going to try to give some input on this also. On Mon, Oct 13, 2003 at 02:56:00PM -0400, Michael J. Cohen wrote: > After wrestling with our current net implementation to get bridged interfaces > and vlans working, which ended in me just setting up things in local.start, I > figured a rewrite of our network scripts is in order. > > I have made a primitive version of the rewrite available here: > http://325i.org/proposed-net-replacement > > It is useless in its current state and only provided as an example. > > The reason for this rewrite is twofold: ease of configuration and ease of > maintenance. > > Here are a few of my ideas for the evolution of this currently primitive > rewrite: > > * all networking related configuration should take place in /etc/conf.d/net, > thus eliminating /etc/conf.d/iptables and such I don't agree that iptables should be a part of this; I think of setting up a firewall as a separate, but related task. I do, however, like the idea of one script, and one config file that controls bring up and down all of the network interfaces. > * bringing interfaces up and down should be handled by one script that > recognizes all possible up and down configurations of an interface, for > example, 802.1[d,q] (bridge,vlan), netfilter, dhcp, bootp.. I agree here. it would be nice to be able to have a script or utility that would handle all of this. Don't shoot me for this, lol, but I thought that debian's ifupdown utility was pretty slick. It had a configuration file that described all of the interfaces, the default gateway and whether or not interfaces should be brought up on bootup, and it was called by a single script that brought all of the interfaces up or down. > * configuration of iptables, ipsec, routing, etc should be handled by the up/ > down script calling the appropriate /etc/init.d scripts with the appropriate > arguments. these scripts would have to parse /etc/conf.d/net or rely on some > of the functions in /etc/init.d/net to parse it if the user should decide to > start/restart/reload a script individually I think these should stay separate. I guess my thinking here is that all systems that need to be on a network don't necessarily need these functions, so why make them part of the net script? > If anyone has any input, please feel free to speak your mind. > > I would love to see gentoo become the easiest distro to configure network > interfaces for *any* and *all* possible configurations, and I feel that this > is the first step to achieve that goal. Let me know what you think. William -- gentoo-dev@gentoo.org mailing list ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2003-10-14 15:21 UTC | newest] Thread overview: 5+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2003-10-13 18:56 [gentoo-dev] Proposal: networking startup script rewrite Michael J. Cohen 2003-10-13 22:09 ` Stroller [not found] ` <D1EAAB31-FDC9-11D7-BA49-000A95795F3E@stellar.eclipse.co.uk> 2003-10-14 2:17 ` Michael J. Cohen 2003-10-14 14:09 ` Stroller 2003-10-14 15:21 ` William Hubbs
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox