diff options
author | Oliver Kästner <git@oliver-kaestner.de> | 2023-10-16 23:13:28 +0200 |
---|---|---|
committer | Aleksander Morgado <aleksander@aleksander.es> | 2024-04-12 11:17:18 +0000 |
commit | 2e4dc6911fed12320bddae3d1f19b7b334d52f2c (patch) | |
tree | d8ca5f03e1b7273496a4e74099edeb426d6b135c /src | |
parent | 4f1864921acfa70b9f3d0aea68810ff3b2afc765 (diff) |
huawei: handle IPv6 connection status changes
Diffstat (limited to 'src')
-rw-r--r-- | src/plugins/huawei/mm-broadband-modem-huawei.c | 20 |
1 files changed, 12 insertions, 8 deletions
diff --git a/src/plugins/huawei/mm-broadband-modem-huawei.c b/src/plugins/huawei/mm-broadband-modem-huawei.c index 88f97ad5..641e2ed6 100644 --- a/src/plugins/huawei/mm-broadband-modem-huawei.c +++ b/src/plugins/huawei/mm-broadband-modem-huawei.c @@ -2001,14 +2001,18 @@ static void bearer_report_connection_status (MMBaseBearer *bearer, NdisstatResult *ndisstat_result) { - if (ndisstat_result->ipv4_available) { - /* TODO: MMBroadbandBearerHuawei does not currently support IPv6. - * When it does, we should check the IP family associated with each bearer. */ - mm_base_bearer_report_connection_status (bearer, - ndisstat_result->ipv4_connected ? - MM_BEARER_CONNECTION_STATUS_CONNECTED : - MM_BEARER_CONNECTION_STATUS_DISCONNECTED); - } + MMBearerConnectionStatus status; + + /* Note: unsolicited ^NDISSTAT messages can contain: + * a) only IPv4, b) both IPv4 and IPv6, c) only IPv6 connection status + * A disconnect (^NDISDUP=1,0) seems to trigger two separate messages though + */ + status = (ndisstat_result->ipv4_available && ndisstat_result->ipv4_connected) || + (ndisstat_result->ipv6_available && ndisstat_result->ipv6_connected) ? + MM_BEARER_CONNECTION_STATUS_CONNECTED : + MM_BEARER_CONNECTION_STATUS_DISCONNECTED; + + mm_base_bearer_report_connection_status (bearer, status); } static void |