Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!

Bug 458074

Summary: sys-apps/openrc-0.11.8 doesn't parse correctly options contained two words abreast self
Product: Gentoo Hosted Projects Reporter: Marcin Mirosław <bug>
Component: netifrcAssignee: netifrc Team <netifrc>
Status: IN_PROGRESS ---    
Severity: normal    
Priority: Normal    
Version: unspecified   
Hardware: All   
OS: Linux   
Whiteboard: netifrc:DOC
Package list:
Runtime testing required: ---

Description Marcin Mirosław 2013-02-18 09:56:13 UTC
# grep giga /etc/conf.d/net
dhcp_giga="nontp"
config_giga="dhcp apipa"
# /etc/init.d/net.giga -D restart
net.giga           | * Bringing down interface giga
net.giga           | *   Bringing up interface giga
net.giga           | *     dhcp ...
net.giga           | *       nothing provides `dhcp apipa'       [ !! ]

Openrc should obtain dhcp lease and next try to use apipa but it failed.
New example:
# grep giga /etc/conf.d/net
dhcp_giga="nontp"
config_giga="dhcp 1.1.1.1/24 apipa"
# /etc/init.d/net.giga -D restart
net.giga           | * Bringing down interface giga
net.giga           | *   Bringing up interface giga
net.giga           | *     dhcp ...
net.giga           | *       Running udhcpc ...                            [ ok ]
net.giga           | *       received address 192.168.138.85/24            [ ok ]
net.giga           | *     1.1.1.1/24 ...                                  [ ok ]
net.giga           | *     apipa ...
net.giga           | *       nothing provides `apipa'                      [ !! ]

Now openrc do what I expect to get.



Reproducible: Always




# emerge --info
Portage 2.1.11.52 (default/linux/amd64/13.0/desktop/kde, gcc-4.7.2, glibc-2.16.0, 3.7.8-gentoo x86_64)
=================================================================
System uname: Linux-3.7.8-gentoo-x86_64-Intel-R-_Core-TM-2_Duo_CPU_E8400_@_3.00GHz-with-gentoo-2.2
KiB Mem:     3079484 total,    447364 free
KiB Swap:    5828748 total,   5472336 free
Timestamp of tree: Mon, 18 Feb 2013 06:30:01 +0000
ld GNU gold (GNU Binutils 2.23.1) 1.11
ccache version 3.1.9 [enabled]
app-shells/bash:          4.2_p42
dev-java/java-config:     2.1.12-r1
dev-lang/python:          2.7.3-r3, 3.2.3-r2
dev-util/ccache:          3.1.9
dev-util/cmake:           2.8.10.2-r1
dev-util/pkgconfig:       0.28
sys-apps/baselayout:      2.2
sys-apps/openrc:          0.11.8
sys-apps/sandbox:         2.6
sys-devel/autoconf:       2.13, 2.69
sys-devel/automake:       1.11.6, 1.12.6, 1.13.1
sys-devel/binutils:       2.23.1
sys-devel/gcc:            4.5.4, 4.7.2
sys-devel/gcc-config:     1.8
sys-devel/libtool:        2.4.2
sys-devel/make:           3.82-r4
sys-kernel/linux-headers: 3.7 (virtual/os-headers)
sys-libs/glibc:           2.16.0
Repositories: gentoo sunrise
ACCEPT_KEYWORDS="amd64 ~amd64"
ACCEPT_LICENSE="* -@EULA AdobeFlash-10.3 PUEL Q3AEULA skype-eula dlj-1.1 Oracle-BCLA-JavaSE"
CBUILD="x86_64-pc-linux-gnu"
CFLAGS="-O2 -march=native -pipe -ggdb -fpeel-loops -frename-registers -frecord-gcc-switches -fno-unwind-tables -fno-asynchronous-unwind-tables -fpredictive-commoning -fweb -ftree-vectorize -floop-interchange -fivopts -floop-block -floop-strip-mine -fira-loop-pressure -floop-interchange -ftree-loop-linear -Wdisabled-optimization"
CHOST="x86_64-pc-linux-gnu"
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/polkit-1/actions"
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/sandbox.d /etc/terminfo"
CXXFLAGS="-O2 -march=native -pipe -ggdb -fpeel-loops -frename-registers -frecord-gcc-switches -fno-unwind-tables -fno-asynchronous-unwind-tables -fpredictive-commoning -fweb -ftree-vectorize -floop-interchange -fivopts -floop-block -floop-strip-mine -fira-loop-pressure -floop-interchange -ftree-loop-linear -Wdisabled-optimization"
DISTDIR="/usr/portage/distfiles"
FCFLAGS="-O2 -pipe"
FEATURES="Xfail-clean Xkeepwork Xunmerge-backup assume-digests binpkg-logs ccache collision-protect compressdebug config-protect-if-modified distlocks ebuild-locks fixlafiles merge-sync news parallel-fetch protect-owned sandbox sfperms splitdebug strict unmerge-logs unmerge-orphans userfetch userpriv usersandbox usersync xattr"
FFLAGS="-O2 -pipe"
GENTOO_MIRRORS="http://distfiles.gentoo.org"
LDFLAGS="-Wl,-O1 -Wl,--as-needed"
MAKEOPTS="-j1"
PKGDIR="/usr/portage/packages"
PORTAGE_CONFIGROOT="/"
PORTAGE_RSYNC_EXTRA_OPTS="-O"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --human-readable --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/usr/local/portage/layman/sunrise"
SYNC="rsync://192.168.138.254/gentoo-portage"
USE="64bit X a52 aac acl acpi aio alsa amd64 apm async bash-completion bittorrent branding bzip2 cairo caps cdda cdr chroot cli consolekit crypt cups cxx dbus declarative dmx dri dvd dvdr emboss encode exif fam firefox ftp gif glibc-omitfp gpm graphite gstreamer iconv idn iproute2 ipv6 ithreads jpeg kde kipi laptop lcms libnotify lightning logrotate mad mmap mmx mmxext mng modules mp3 mp4 mpeg mudflap multilib ncurses network-cron nls nptl nsplugin nspluginwrapper objc ogg opengl openmp openssl optimization optimized-qmake pam pango pch pcre pdf phonon plasma png policykit ppds qt3support qt4 readline samba sdl semantic-desktop session sharedmem smp spell sse sse2 sse3 sse4_1 ssl ssse3 startup-notification svg threads threadsafe tiff tools truetype udev udisks unicode upower urandom usb vim vim-pager vim-syntax vorbis wxwidgets x264 xattr xcb xcomposite xinerama xml xscreensaver xv xvid zip zlib" ABI_X86="64" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_user autoindex cgid dav dbd deflate dir env expires ext_filter filter headers include info log_config logio mime mime_magic negotiation rewrite setenvif speling status unique_id usertrack vhost_alias" APACHE2_MPMS="worker" CALLIGRA_FEATURES="kexi words flow plan sheets stage tables krita karbon braindump" CAMERAS="ptp2" COLLECTD_PLUGINS="df interface irq load memory rrdtool swap syslog" DRACUT_MODULES="caps lvm mdraid" ELIBC="glibc" GPSD_PROTOCOLS="ashtech aivdm earthmate evermore fv18 garmin garmintxt gpsclock itrax mtk3301 nmea ntrip navcom oceanserver oldstyle oncore rtcm104v2 rtcm104v3 sirf superstar2 timing tsip tripmate tnt ubx" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LIBREOFFICE_EXTENSIONS="presenter-console presenter-minimizer" LINGUAS="pl en es es_ES" PHP_TARGETS="php5-3" PYTHON_SINGLE_TARGET="python2_7" PYTHON_TARGETS="python2_7 python3_2" RUBY_TARGETS="ruby19" USERLAND="GNU" VIDEO_CARDS="nvidia" XTABLES_ADDONS="quota2 psd pknock lscan length2 ipv4options ipset ipp2p iface geoip fuzzy condition tee tarpit sysrq steal rawnat logmark ipmark dhcpmac delude chaos account"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, LANG, LC_ALL, PORTAGE_BUNZIP2_COMMAND, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, USE_PYTHON
Comment 1 Ian Stakenvicius gentoo-dev 2013-08-22 20:30:24 UTC
I believe this might be a design issue -- that is, separate, independent config options for each iface should be separated by a newline; the case where you set a static IPv4 address in between just happens to make it work by coincidence.

Please try:

dhcp_giga="nontp"
config_giga="dhcp
apipa"

..and see if this works as expected.
Comment 2 Robin Johnson archtester Gentoo Infrastructure gentoo-dev Security 2013-08-23 02:40:15 UTC
Yes, as axs notes, they must be seperated by newlines.

Multiple IPs on a single line works for reasons of BL1 compatibility only.

Back in BL1 it was a bash array, and multiple IPs in a single array element 0 were supported for old systems. We do still parse bash arrays if bash is used, but display warnings telling users to migrate. We should consider removing the array support, as it's been deprecated for years now.

In the meantime, I welcome you to suggest how we can improve the documentation net.example.
Comment 3 Marcin Mirosław 2013-08-23 08:17:50 UTC
As Ian said, if every option is in new line then openrc configures network as I expect.

Robin, you said:
> We do still parse bash arrays if bash is used, but display warnings telling users to migrate

Warning isn't displayed in all cases:
# /etc/init.d/net.giga -D restart
net.giga               | * Bringing down interface giga
net.giga               | *   Stopping udhcpc on giga ...                      [ ok ]
net.giga               | *   Bringing up interface giga
net.giga               | *     1.2.3.4/24 ...                                 [ ok ]
net.giga               | *     2.3.4.5/24 ...                                 [ ok ]
# grep giga /etc/conf.d/net
dhcp_giga="nontp"
config_giga="1.2.3.4/24 2.3.4.5/24"
# /etc/init.d/net.giga -D restart
net.giga               | * Bringing down interface giga
net.giga               | *   Bringing up interface giga
net.giga               | *     You are using a bash array for config_giga.
net.giga               | *     This feature will be removed in the future.
net.giga               | *     Please see net.example for the correct format for config_giga.
net.giga               | *     1.2.3.4/24 ...                                 [ ok ]
net.giga               | *     2.3.4.5/24 ...                                 [ ok ]

# grep giga /etc/conf.d/net
dhcp_giga="nontp"
config_giga=( "1.2.3.4/24 2.3.4.5/24" )

If you are going to remove support for bash arrays please add warning about configuration without parentheses and give some time.
In net.example I can see:
# You can also use IPv6 addresses
# (you should always specify a prefix length with IPv6 here)
#config_eth0="192.168.0.2/24 4321:0:1:2:3:4:567:89ab/64 4321:0:1:2:3:4:567:89ac/64"
[...]
#config_eth0="noop 192.168.0.2/24"

So there is many examples that can suggests using multiple options in one line. Please consider to keep support for arrays for sometime:))
About improving documentation, you mean preparing patch or writing information about what places in doc should be reviewed?
Comment 4 Ian Stakenvicius gentoo-dev 2013-08-23 15:41:03 UTC
(In reply to Marcin Mirosław from comment #3)
> Warning isn't displayed in all cases:
> # grep giga /etc/conf.d/net
> dhcp_giga="nontp"
> config_giga="1.2.3.4/24 2.3.4.5/24"

This isn't using arrays.

> Please consider to keep support for arrays for sometime:))

As far as I know there are no plans to drop or remove arrays support -- the issue with it is that it's a bashism, and netifrc doesn't depend on bash but rather POSIX sh and so we can't *officially* support arrays in conf.d/net.


> About improving documentation, you mean preparing patch or writing
> information about what places in doc should be reviewed?

Yep.  Anywhere in net.example (or any other docs) that is putting multiple independent config options on the same line in config_*, should be flagged and/or adjusted.  Patches welcome!
Comment 5 Ian Stakenvicius gentoo-dev 2013-08-23 15:44:17 UTC
(In reply to Ian Stakenvicius from comment #4)
> (In reply to Marcin Mirosław from comment #3)
> > Please consider to keep support for arrays for sometime:))
> 
> As far as I know there are no plans to drop or remove arrays support

..correction, I guess robbat2 is suggesting it's removal.  I'll read better before posting next time.
Comment 6 William Hubbs gentoo-dev 2013-09-07 18:40:32 UTC
(In reply to Ian Stakenvicius from comment #4)
> (In reply to Marcin Mirosław from comment #3)
> > Warning isn't displayed in all cases:
> > # grep giga /etc/conf.d/net
> > dhcp_giga="nontp"
> > config_giga="1.2.3.4/24 2.3.4.5/24"
> 
> This isn't using arrays.

Ian is correct; this is not using an array so it will not trigger the warning. An array would have () instead of quotes.

> 
> > Please consider to keep support for arrays for sometime:))

Array support has been around, with a warning about deprecation, for years, so I don't see a need to keep it around for more years.

> > About improving documentation, you mean preparing patch or writing
> > information about what places in doc should be reviewed?
> 
> Yep.  Anywhere in net.example (or any other docs) that is putting multiple
> independent config options on the same line in config_*, should be flagged
> and/or adjusted.  Patches welcome!

I think net.example  is probably going to be the main source of this.