On Sat, Feb 26, 2022 at 9:53 AM Martin-Éric Racine <martin-eric.rac...@iki.fi> wrote: > > On Fri, Feb 25, 2022 at 3:52 PM Roy Marples <r...@marples.name> wrote: > > > > On 25/02/2022 09:25, Martin-Éric Racine wrote: > > > Right now, my personal experiements with dhcpcd indicate that > > > something as simple as passing options to wpa_supplicant via dhcpcd's > > > configuration file is not an easy task. > > > > Why would you want to? They have separate domains of responsibility. One > > configures the addressing and routes and other misc related stuff and the > > other > > brings up the actual link to do this on. > > Because having the configuration data for all interfaces is > /etc/network/interfaces' whole point. > > > dhcpcd's wpa_supplicant hook was written to solely support hotplugging a USB > > wireless stick into a machine without any kind of hotplug support. > > Since then I have added then -M flag to wpa_supplicant so it can do it by > > itself. > > Which is a problem. dhcpcd and systemd currently compete for control > of the wireless device. systemd tries to rename it to follow > Predictable Network Interface Names at the same time as dhcpcd tries > to to connect it to a network. It results in configuration failing. > Also, unless I missed something, dhcpcd doesn't currently have the > built-in logic to understand whether a device is wireless (needs WPA) > or not (doesn't need anythign else than DHCP). > > > Now if you want to configure wpa_supplicant via dhcpcd for a specific > > wireless > > network then the dhcpcd-ui project exists for that and relies on the > > wpa_supplicant config being writable via the wpa_supplicant control socket. > > Nice idea for laptops, not so good idea for hosts that need to > repeatedly connect to the same AP and then perform otherws tasks such > as serve as a bridge for a LAN. For instance: > > allow-hotplug enp9s0 wlp12s0 > iface enp9s0 inet dhcp > iface enp9s0 inet6 auto > privext 2 > dhcp 1 > iface wlp12s0 inet dhcp > wpa-ssid <SSID> > wpa-psk <password> > iface wlp12s0 inet6 auto > privext 2 > dhcp 1 > > This results in the host always getting a connection. If just routes > through whichever interface managed to get a DHCP configuration. > > > > Ditto for enabling prefix > > > delegation to a second interface. > > > > Lets talk about this separately. > > Please email me and I'll help you with your setup, no need to muddy an > > unrelated > > debian bug report about it. > > The point here was how not doing it in a flat file where all > interfaces can be centrally configured is a distraction. The one file > provides a centralized view and a uniform syntax. > > > > Via ifupdown's > > > /etc/network/interfaces these follow a normalized syntax that is > > > completely independant of which tools perform the actual network > > > configuration under the hood. > > > > ifupdown is great for static configuration. > > I would use it to configure links such as bonding, bridging, etc. > > Anything dynamic, not so great. > > > > For example having ifupdown start separate instances of a DHCP client per > > interface is not only a waste of resources it also introduces undefined > > behaviour because only one of these can bind to the unspecified address. The > > only way around this is opening a socket for every address on the interface. > > If you have a lot of interfaces or addresses dhcpcd would rapidly drain > > available resources just to guarantee a defined behaviour. > > The separate stanzas for inet and inet6 is something I've long > wondered about. dhclient's man page has the answer: > > 4 Use the DHCPv4 protocol to obtain an IPv4 address and > configuration parameters. This is the default and cannot be combined > with -6. > > This is precisely why I want to replace dhclient with dhcpcd as the > default DHCP client. If an interface is marked in > /etc/network/interfaces as DHCP type, both IPv4 and IPv6 should be > attempted in a transparent way, and dhcpcd does that wonderfully. > > > >>> Configure's upstream default paths make Lintian bark, so I've kept the > > >>> overrides in debian/rules for now. It might be worth working with > > >>> upstream on making the defaults do what FHS and current packaging > > >>> practices want. > > >> > > >> The default upstream paths mirror that of a BSD system. I belive that is > > >> in > > >> conflict with FHS. > > > > > > There's more. For instance, manual pages canonically go to > > > /usr/share/man/manX (or /usr/local/share/man/manX for locally-built > > > packages). dhcpcd's Configure defaults put these in /share/man/manX if > > > no prefix is passed to configure. Also hooks are currectly put in > > > ${prefix}/libexec (which is the correct FHS location), but since they > > > are not executable and lack the Bourne shell shebang, Lintian barks. > > > > dhcpcd's configure default puts them into /usr/share/man/manX if nothing is > > passed to configure. Maybe the Debian package is doing something > > differently? > > > > The hooks that dhcpcd-run-hooks calls make zero sense being executed > > outside of > > dhcpcd-run-hooks so being marked executable with a shell shebang also makes > > zero > > sense. > > Here's what I get on a build that uses the upstream configure defaults > as-is (i.e.overrides in debian/rules disabled): > > SYSCONFDIR = /etc > SBINDIR = /usr/sbin > LIBDIR = /lib/i386-linux-gnu > LIBEXECDIR = /usr/libexec > DBDIR = /var/db/dhcpcd > RUNDIR = /run/dhcpcd > MANDIR = /share/man > DATADIR = /usr/share > HOOKSCRIPTS = > EGHOOKSCRIPTS = 50-yp.conf > STATUSARG = > PRIVSEPUSER = dhcpcd > > E: dhcpcd5: non-standard-dir-in-var var/db/ > E: dhcpcd5: non-standard-toplevel-dir share/ > W: dhcpcd5-dbgsym: elf-error In program headers: Unable to find > program interpreter name > [usr/lib/debug/.build-id/df/5e855a885adce7a0063b55ff5f1e406f77cd48.debug] > W: dhcpcd5: executable-not-elf-or-script usr/libexec/dhcpcd-hooks/01-test > W: dhcpcd5: executable-not-elf-or-script > usr/libexec/dhcpcd-hooks/20-resolv.conf > W: dhcpcd5: executable-not-elf-or-script usr/libexec/dhcpcd-hooks/30-hostname > W: dhcpcd5: file-in-unusual-dir share/man/man5/dhcpcd.conf.5 > W: dhcpcd5: file-in-unusual-dir share/man/man8/dhcpcd-run-hooks.8 > W: dhcpcd5: file-in-unusual-dir share/man/man8/dhcpcd.8 > W: dhcpcd5: no-manual-page usr/sbin/dhcpcd > > drwxr-xr-x root/root 0 2022-02-24 15:08 ./etc/ > -rw-r--r-- root/root 1429 2022-02-24 15:08 ./etc/dhcpcd.conf > drwxr-xr-x root/root 0 2022-02-24 15:08 ./etc/init.d/ > -rwxr-xr-x root/root 1905 2019-05-03 16:14 ./etc/init.d/dhcpcd > drwxr-xr-x root/root 0 2022-02-24 15:08 ./lib/ > drwxr-xr-x root/root 0 2022-02-24 15:08 ./lib/systemd/ > drwxr-xr-x root/root 0 2022-02-24 15:08 ./lib/systemd/system/ > -rw-r--r-- root/root 191 2019-05-03 16:14 > ./lib/systemd/system/dhcpcd.service > drwxr-xr-x root/root 0 2022-02-24 15:08 ./share/ > drwxr-xr-x root/root 0 2022-02-24 15:08 ./share/man/ > drwxr-xr-x root/root 0 2022-02-24 15:08 ./share/man/man5/ > -rw-r--r-- root/root 30106 2022-02-24 15:08 ./share/man/man5/dhcpcd.conf.5 > drwxr-xr-x root/root 0 2022-02-24 15:08 ./share/man/man8/ > -rw-r--r-- root/root 7091 2022-02-24 15:08 > ./share/man/man8/dhcpcd-run-hooks.8 > -rw-r--r-- root/root 26559 2022-02-24 15:08 ./share/man/man8/dhcpcd.8 > drwxr-xr-x root/root 0 2022-02-24 15:08 ./usr/ > drwxr-xr-x root/root 0 2022-02-24 15:08 ./usr/lib/ > drwxr-xr-x root/root 0 2022-02-24 15:08 ./usr/lib/dhcpcd/ > drwxr-xr-x root/root 0 2022-02-24 15:08 ./usr/lib/dhcpcd/dhcpcd-hooks/ > -rw-r--r-- root/root 2496 2019-05-03 16:14 > ./usr/lib/dhcpcd/dhcpcd-hooks/60-ntp-common.conf > -rw-r--r-- root/root 380 2019-05-03 16:14 > ./usr/lib/dhcpcd/dhcpcd-hooks/62-chrony.conf > -rw-r--r-- root/root 466 2019-05-03 16:14 > ./usr/lib/dhcpcd/dhcpcd-hooks/64-timesyncd.conf > -rw-r--r-- root/root 546 2019-05-03 16:14 > ./usr/lib/dhcpcd/dhcpcd-hooks/66-ntp.conf > -rw-r--r-- root/root 549 2019-05-03 16:14 > ./usr/lib/dhcpcd/dhcpcd-hooks/68-openntpd.conf > drwxr-xr-x root/root 0 2022-02-24 15:08 ./usr/libexec/ > drwxr-xr-x root/root 0 2022-02-24 15:08 ./usr/libexec/dhcpcd-hooks/ > -rwxr-xr-x root/root 734 2022-02-24 15:08 > ./usr/libexec/dhcpcd-hooks/01-test > -rwxr-xr-x root/root 6164 2022-02-24 15:08 > ./usr/libexec/dhcpcd-hooks/20-resolv.conf > -rwxr-xr-x root/root 3762 2022-02-24 15:08 > ./usr/libexec/dhcpcd-hooks/30-hostname > -rwxr-xr-x root/root 8163 2022-02-24 15:08 ./usr/libexec/dhcpcd-run-hooks > drwxr-xr-x root/root 0 2022-02-24 15:08 ./usr/sbin/ > -rwxr-xr-x root/root 404904 2022-02-24 15:08 ./usr/sbin/dhcpcd > drwxr-xr-x root/root 0 2022-02-24 15:08 ./usr/share/ > drwxr-xr-x root/root 0 2022-02-24 15:08 ./usr/share/dhcpcd/ > drwxr-xr-x root/root 0 2022-02-24 15:08 ./usr/share/dhcpcd/hooks/ > -rw-r--r-- root/root 2832 2022-02-24 15:08 > ./usr/share/dhcpcd/hooks/10-wpa_supplicant > -rw-r--r-- root/root 885 2022-02-24 15:08 > ./usr/share/dhcpcd/hooks/15-timezone > -rw-r--r-- root/root 814 2022-02-24 15:08 > ./usr/share/dhcpcd/hooks/29-lookup-hostname > -rw-r--r-- root/root 1163 2022-02-24 15:08 > ./usr/share/dhcpcd/hooks/50-yp.conf > drwxr-xr-x root/root 0 2022-02-24 15:08 ./usr/share/doc/ > drwxr-xr-x root/root 0 2022-02-24 15:08 ./usr/share/doc/dhcpcd5/ > -rw-r--r-- root/root 2619 2022-02-24 15:08 > ./usr/share/doc/dhcpcd5/changelog.Debian.gz > -rw-r--r-- root/root 7966 2022-02-24 09:34 > ./usr/share/doc/dhcpcd5/copyright > drwxr-xr-x root/root 0 2022-02-24 15:08 ./var/ > drwxr-xr-x root/root 0 2022-02-24 15:08 ./var/db/ > drwxr-xr-x root/root 0 2022-02-24 15:08 ./var/db/dhcpcd/ > > Martin-Éric
I forgot to include the actual configure stanza that gets issued. Here it is, straight from the build log: dh_auto_configure ./configure --build=i686-linux-gnu --prefix=/usr --includedir=\${prefix}/include --mandir=\${prefix}/share/man --infodir=\${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-option-checking --disable-silent-rules --libdir=\${prefix}/lib/i386-linux-gnu --runstatedir=/run --disable-maintainer-mode --disable-dependency-tracking configure args: --build=i686-linux-gnu --prefix=/usr --includedir=${prefix}/include --mandir=${prefix}/share/man --infodir=${prefix}/share/info --sysconfdir=/etc --localstatedir=/var --disable-option-checking --disable-silent-rules --libdir=${prefix}/lib/i386-linux-gnu --runstatedir=/run --disable-maintainer-mode --disable-dependency-tracking ./configure: WARNING: unknown option --disable-option-checking Martin-Éric