Hi Daniel and Denis,
I got a final hardware prototype to run iwd + connman, the WiFi works
with wpa_supplicant, now I changed to use iwd version 1.26 and connman
I have 2 network interfaces, an 4G LTE and a WiFi so I want to use
connman to control interface connection PreferredTechnologies =
Following your advice, I set up EnableNetworkConfiguration=false in
/etc/iwd/main.conf, the WiFi was connected, but no IP address. Here is
On 12/3/21, Daniel Wagner <wagi(a)monom.org> wrote:
> On 30.11.21 23:42, Denis Kenzior wrote:
>> Note that for iwd + connman, connman would be the one performing DHCP
>> and iwd should use EnableNetworkConfiguration=false. Daniel can correct
>> me if I'm wrong.
> This is correct. Though I think it should be possible to change this.
> For example for VPN the VPN service tells ConnMan the IP configuration
> to use. The iwd plugin could do the amse and tell the ConnMan core which
> IP configuration to use.
$ cat /etc/iwd/main.conf
The WiFi interface is connected:
$ iwctl station mlan0 show
Settable Property Value
Connected network JupiterIoT
No IP addresses Is DHCP client configured?
RSSI -54 dBm
TxBitrate 19500 Kbit/s
RxBitrate 1000 Kbit/s
The DHCP works as well:
# udhcpc -i mlan0
udhcpc: started, v1.35.0
udhcpc: broadcasting discover
udhcpc: broadcasting select for 192.168.0.101, server 192.168.0.1
udhcpc: lease of 192.168.0.101 obtained from 192.168.0.1, lease time 86400
But there is no IP address:
mlan0 Link encap:Ethernet HWaddr D4:CA:6E:A4:E8:E0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:188 errors:0 dropped:0 overruns:0 frame:0
TX packets:60 errors:0 dropped:0 overruns:0 carrier:0
RX bytes:11256 (10.9 KiB) TX bytes:6990 (6.8 KiB)
What I could be missing in iwd configuration?
The iwd also kept showing the following message, the 34:XX:XX:XX:b1:a2
is not the wlan MAC address, what did that mean?
[ 8456.501736] wlan: Send EAPOL pkt to 34:XX:XX:XX:b1:a2
IWD is swiching to a new mailing list: iwd(a)lists.linux.dev. This list
is currently active and ready so any future patches, questions, or
comments can be sent there!
You might be wondering, why is this being done? The reason for this
change is to enable an automated CI for IWD to catch regressions, build
breaks, or any other issues which previously required manual testing.
You will see the CI results from you're changes in patchwork:
Note the CI is still in a trial stage, so email notifications have been
disabled. You will not receive any notifications about test results but
know that maintainers are checking the results and will point you to
any problems that are found.
If you have any questions please don't hesitate to ask.
IWD will be switching to a new mailing list iwd(a)lists.linux.dev.
This list is active already, and any new patches should be sent
HACKING | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/HACKING b/HACKING
index 5925490e..8a84a449 100644
@@ -5,7 +5,7 @@ If you fixed a bug or you want to add support for something, patches are
welcome! The preferred method of submitting the patches to the project is by
email to the iwd mailing list:
In order to ease the inclusion of your patch, it's important to follow
some rules, otherwise it will likely be rejected by maintainers.
Though the documentation for NLMSG_OK uses an int type for the length
the actual check is based on nlmsghdr->nlmsg_len which is a 32 bit
unsigned integer. Clang was complaining about one call in nlmon.c
because nlmsg_len was int type. Every other usage in nlmon.c uses
a uint32_t, so use that both for consistency and to fix the warning.
monitor/nlmon.c:7998:29: error: comparison of integers of different
signs: '__u32' (aka 'unsigned int') and 'int'
for (nlmsg = iov.iov_base; NLMSG_OK(nlmsg, nlmsg_len);
/usr/include/linux/netlink.h:100:24: note: expanded from macro 'NLMSG_OK'
(nlh)->nlmsg_len <= (len))
monitor/nlmon.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/monitor/nlmon.c b/monitor/nlmon.c
index fe967922..34c5eed6 100644
@@ -7944,7 +7944,7 @@ static bool nlmon_receive(struct l_io *io, void *user_data)
unsigned char buf;
unsigned char control;
- int nlmsg_len;
+ uint32_t nlmsg_len;
fd = l_io_get_fd(io);
On musl-gcc the compiler is giving a warning for igtk_key_index
and gtk_key_index being used uninitialized. This isn't possible
since they are only used if gtk/igtk are non-NULL so pragma to
ignore the warning.
src/fils.c: In function 'fils_rx_associate':
src/fils.c:580:17: error: 'igtk_key_index' may be used uninitialized
in this function [-Werror=maybe-uninitialized]
580 | handshake_state_install_igtk(fils->hs,
igtk_key_index,igtk + 6,
igtk_len - 6, igtk);
(same error for gtk_key_index)
src/fils.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/src/fils.c b/src/fils.c
index d1d46d65..c3337352 100644
@@ -572,6 +572,8 @@ static int fils_rx_associate(struct auth_proto *driver, const uint8_t *frame,
handshake_state_set_pmk(fils->hs, fils->pmk, fils->pmk_len);
+_Pragma("GCC diagnostic push")
+_Pragma("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
handshake_state_install_gtk(fils->hs, gtk_key_index, gtk,
gtk_len, key_rsc, 6);
@@ -579,6 +581,7 @@ static int fils_rx_associate(struct auth_proto *driver, const uint8_t *frame,
igtk + 6, igtk_len - 6, igtk);
+_Pragma("GCC diagnostic pop")
handshake_state_set_ptk(fils->hs, fils->kek_and_tk, fils->kek_len + 16);
SevenMentor is really one of the most popular brands of AutoCad Training in Pune for Computer Backed Drawing( CAD) which helps produce arrangements for structures and townships on your computer. The USP of the software is that it allows structural experts to draw everything in precise detail and to gauge and can be used to design any kindofstructure.What makes AutoCAD Classes in Pune special for professionals is that it's packed with features that make the process of creating 2D and 3D delineations extremely indefectible. The delineations thus created look real and can help imagine what the terrain being created will actually look like. masterminds can also remove or add features real- time to meliorate the overall aesthetics oftheproject.AutoCAD enables creation of near-real 3D models with solids, shells and snare objects. In addition, you can also automate tasks analogous as comparing delineations, counting, adding blocks, creating schedules and further.
It also comes with sedulity-specific toolsets like Architecture toolset, Mechanical toolset, Map 3D toolset, MEP toolset, Electrical toolset, plant 3D toolset, Raster Design toolset, among others that suit the conditions of different professionals and offers an advanced connected experience across different platforms allowing for easier collaborations and train sharing.
In keeping with the nippy changes in technology, the Online AutoCAD Training in Pune offers indefectible connections with the web and mobile apps. With the conversion to Cloud, the 3D models created can be rendered online without consuming processing power or scrap space on your computer, which is a real boon for heavy design lines that are created usingthissoftware.Such is the power of Cloud that you can enjoy a connected design experience across CAD Courses in Pune on nearly any device and do n’t inevitably need a computer with high configurations.
Since commit 922fa099721903b106a7bc1ccd1ffe8c4a7bce69 in hostap, our
setting of config_methods on P2P-client interface was ignored. Work
around that commit, in addition to the previous workaround we have in
this test, to again ensure the correct config_methods value is used.
autotests/testP2P/connection_test.py | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/autotests/testP2P/connection_test.py b/autotests/testP2P/connection_test.py
index 383e0cef..479076e8 100644
@@ -87,7 +87,12 @@ class Test(unittest.TestCase):
# For some reason wpa_supplicant's newly created P2P-client interface doesn't inherit
# the settings from the main interface which were loaded from the config file
# (P2P-device and P2P-GO interfaces do), we need to set config_methods again.
+ # Additionally since hostap commit 922fa099721903b106a7bc1ccd1ffe8c4a7bce69,
+ # just setting config_methods to the same value we used last time is detected as
+ # a NOOP so we need to set it to a different value first for it to take effect.
peer_ifname = 'p2p-' + wpas.interface.name + '-0'
+ wpas.set('config_methods', '', ifname=peer_ifname)
wpas.set('config_methods', wpas.config['config_methods'], ifname=peer_ifname)
wpas.set('device_name', wpas.config['device_name'], ifname=peer_ifname)
wpas.set('device_type', wpas.config['device_type'], ifname=peer_ifname)
The glob match was completely broken for --verbose because globs
are actually path matches, not generally for strings. Instead
match based on regular expressions.
First the verbose option was fixed to store it as an array as well
as write any list arguments into the kernel command line properly
(str() would include ). This has worked up until now because the
'in' keyword in python will work on strings just as well
as lists, for example:
>>> 'test' in 'this,is,a,test'
Then, the glob match was replaced with a regex match. Any exceptions
are caught and somewhat ignored (printed, but only seen with --debug).
This only guards against fatal exceptions from a user passing an
tools/runner.py | 7 +++++--
tools/utils.py | 11 +++++++----
2 files changed, 12 insertions(+), 6 deletions(-)
diff --git a/tools/runner.py b/tools/runner.py
index ccc931ff..2ce26de0 100644
@@ -72,7 +72,10 @@ class RunnerNamespace(Namespace):
if v in [None, False, , '']:
- ret += '%s=%s ' % (k, str(v))
+ if type(v) is list:
+ ret += '%s=%s ' % (k, ','.join(v))
+ ret += '%s=%s ' % (k, str(v))
@@ -89,7 +92,7 @@ class RunnerCoreArgParse(ArgumentParser):
self.add_argument('--verbose', '-v', metavar='<list>',
+ type=lambda x: x.split(','),
help='Comma separated list of applications',
diff --git a/tools/utils.py b/tools/utils.py
index 55db4227..d16f221f 100644
@@ -8,7 +8,7 @@ import dbus
from gi.repository import GLib
from weakref import WeakValueDictionary
-from glob import glob
+from re import match
from runner import RunnerCoreArgParse
@@ -95,10 +95,13 @@ class Process(subprocess.Popen):
if process == 'valgrind' and 'iwd' in Process.testargs.verbose:
- # Handle any glob matches
+ # Handle any regex matches
for item in Process.testargs.verbose:
- if process in glob(item):
- return True
+ if match(item, process):
+ return True
+ except Exception as e:
+ print("%s is not a valid regex" % item)