Bug 408181

Summary: wpa_supplicant service script is completely FUBARed
Product: [Fedora] Fedora Reporter: sarcastic.mannequin
Component: wpa_supplicantAssignee: Dan Williams <dcbw>
Status: CLOSED NOTABUG QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: low Docs Contact:
Priority: low    
Version: 8Keywords: Reopened
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2007-12-03 22:35:24 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description sarcastic.mannequin 2007-12-03 01:19:28 UTC
Description of problem:

wpa_supplicant service script is completely FUBARed.

Version-Release number of selected component (if applicable):

current release at 2007-11-02

How reproducible:

Try to get wpa_supplicant service to work.


Steps to Reproduce:
1.
2.
3.
  
Actual results:


Expected results:


Additional info: The wpa_supplicant service script won't work and I don't see
how it can ever work the way the script is written. I don't mean to be mean, but
is this stuff not tested or what!!!???

Comment 1 Peter Lemenkov 2007-12-03 09:55:35 UTC
Please be more descriptive. 

Speaking closely to topic of your question - looks like wpa_supplicant not
tested by its Fedora maintainers in any configuration w/o NetworkManager.

Comment 2 Dan Williams 2007-12-03 14:59:43 UTC
In what way is it not working?  The known issues are that options to enable the
D-Bus interface are used, but that the dynamic initscript dependency calculation
introduced with Fedora 8 broke the manual dependency that made wpa_supplicant
start after the messagebus service, leading to a failure to start at boot.  As a
workaround for hte moment, please remove the "-u" option from
/etc/init.d/wpa_supplicant.

Comment 3 sarcastic.mannequin 2007-12-03 18:07:05 UTC
The wpa_supplicant initscript picks up $INTERFACES and $DRIVERS configuration
items from /etc/sysconfig/wpa_supplicant but the initscript uses the
configuration items incorrectly. The result is that wpa_supplicant cannot find
the interface and it does not know which driver to use.

This happens every time because the configuration items are passed incorrectly
to the wpa_supplicant program. Would fail any testing.

Comment 4 Dan Williams 2007-12-03 18:22:46 UTC
It doesn't use them incorrectly, the problem is that wpa_supplicant is somewhat
special in the way that it orders and processes arguments.  So either the
INTERFACES & DRIVERS needs to be INTERFACES1, DRIVERS1, INTERFACES2, DRIVERS2,
INTERFACES3, DRIVERS3, etc, and there needs to be CONFFILE1, CONFFILE2,
CONFFILE3, OR the onus is on the person who's configuring the supplicant
_manually_ (at which point you have enough knowledge to figure this out) to make
the arguments correct.  Piling on more shell logic in the initscript to parse
space-separated arguments in each of DRIVERS INTERFACES CONFFILE is just way too
ugly and totally not an option.

Comment 5 sarcastic.mannequin 2007-12-03 21:45:47 UTC
Have you tested this?

wpa_supplicant requires a '-i' before the interface name and a '-D' before the
driver name but the initscript does not add these bits when it uses $INTERFACES
and $DRIVERS from /etc/sysconfig/wpa_supplicant.

This is correct: wpa_supplicant -D wext -i wlan0 ...

This is wrong: wpa_supplicant wext wlan0 ...  <=== the way it is now

I've changed my initscript to add these missing bits and it now works. Sadly, my
linux-fu is too weak to write production scripts so I'll leave that to someone else.

I do agree that it would be overkill to modify the initscript to handle more
than a single wlan. That would seem to be a very rare case. Perhaps just a
comment in the initscript pointing out that it is for a single wlan would suffice.

In that case, to be completely correct, the variables should drop the plurals
and become $INTERFACE and $DRIVER (in both the initscript and the config file).
That assumes the variable names won't conflict with any other network scripts. A
better choice might be $WLAN_INTERFACE and $WLAN_DRIVER. Picky, picky, eh!


Comment 6 Dan Williams 2007-12-03 22:35:24 UTC
Please reread my comments.  You, as the person modifying
/etc/sysconfig/wpa_supplicant, need to put the -i and -D in yourself.  SO, in
that file, you likely need:

INTERFACES="-ieth0"
DRIVERS="-Dwext"

I have added comments in that file in the next build to let users who need to
modify the arguments know what to put there.