* [PATCH] station: check support for all sysfs settings
@ 2024-10-24 13:16 James Prestwood
2024-10-24 14:16 ` Denis Kenzior
2024-10-25 11:14 ` Martin Petzold
0 siblings, 2 replies; 4+ messages in thread
From: James Prestwood @ 2024-10-24 13:16 UTC (permalink / raw)
To: iwd; +Cc: James Prestwood
If IPv6 is disabled or not supported at the kernel level writing the
sysfs settings will fail. A few of them had a support check but this
patch adds a supported bool to the remainder so we done get errors
like:
Unable to write drop_unsolicited_na to /proc/sys/net/ipv6/conf/wlan0/drop_unsolicited_na
---
src/station.c | 36 ++++++++++++++++++++++++++++--------
1 file changed, 28 insertions(+), 8 deletions(-)
diff --git a/src/station.c b/src/station.c
index cef6c66a..34537b26 100644
--- a/src/station.c
+++ b/src/station.c
@@ -74,6 +74,10 @@ static uint32_t roam_retry_interval;
static bool anqp_disabled;
static bool supports_arp_evict_nocarrier;
static bool supports_ndisc_evict_nocarrier;
+static bool supports_drop_gratuitous_arp;
+static bool supports_drop_unsolicited_na;
+static bool supports_ipv4_drop_unicast_in_l2_multicast;
+static bool supports_ipv6_drop_unicast_in_l2_multicast;
static struct watchlist event_watches;
static uint32_t known_networks_watch;
static uint32_t allowed_bands;
@@ -1641,10 +1645,13 @@ static void station_set_drop_neighbor_discovery(struct station *station,
{
char *v = value ? "1" : "0";
- sysfs_write_ipv4_setting(netdev_get_name(station->netdev),
- "drop_gratuitous_arp", v);
- sysfs_write_ipv6_setting(netdev_get_name(station->netdev),
- "drop_unsolicited_na", v);
+ if (supports_drop_gratuitous_arp)
+ sysfs_write_ipv4_setting(netdev_get_name(station->netdev),
+ "drop_gratuitous_arp", v);
+
+ if (supports_drop_unsolicited_na)
+ sysfs_write_ipv6_setting(netdev_get_name(station->netdev),
+ "drop_unsolicited_na", v);
}
static void station_set_drop_unicast_l2_multicast(struct station *station,
@@ -1652,10 +1659,13 @@ static void station_set_drop_unicast_l2_multicast(struct station *station,
{
char *v = value ? "1" : "0";
- sysfs_write_ipv4_setting(netdev_get_name(station->netdev),
- "drop_unicast_in_l2_multicast", v);
- sysfs_write_ipv6_setting(netdev_get_name(station->netdev),
- "drop_unicast_in_l2_multicast", v);
+ if (supports_ipv4_drop_unicast_in_l2_multicast)
+ sysfs_write_ipv4_setting(netdev_get_name(station->netdev),
+ "drop_unicast_in_l2_multicast", v);
+
+ if (supports_ipv6_drop_unicast_in_l2_multicast)
+ sysfs_write_ipv6_setting(netdev_get_name(station->netdev),
+ "drop_unicast_in_l2_multicast", v);
}
static void station_signal_agent_notify(struct station *station);
@@ -5813,6 +5823,16 @@ static int station_init(void)
"arp_evict_nocarrier");
supports_ndisc_evict_nocarrier = sysfs_supports_ipv6_setting("all",
"ndisc_evict_nocarrier");
+ supports_drop_gratuitous_arp = sysfs_supports_ipv4_setting("all",
+ "drop_gratuitous_arp");
+ supports_drop_unsolicited_na = sysfs_supports_ipv6_setting("all",
+ "drop_unsolicited_na");
+ supports_ipv4_drop_unicast_in_l2_multicast =
+ sysfs_supports_ipv4_setting("all",
+ "drop_unicast_in_l2_multicast");
+ supports_ipv6_drop_unicast_in_l2_multicast =
+ sysfs_supports_ipv6_setting("all",
+ "drop_unicast_in_l2_multicast");
watchlist_init(&event_watches, NULL);
--
2.34.1
^ permalink raw reply related [flat|nested] 4+ messages in thread* Re: [PATCH] station: check support for all sysfs settings
2024-10-24 13:16 [PATCH] station: check support for all sysfs settings James Prestwood
@ 2024-10-24 14:16 ` Denis Kenzior
2024-10-25 11:14 ` Martin Petzold
1 sibling, 0 replies; 4+ messages in thread
From: Denis Kenzior @ 2024-10-24 14:16 UTC (permalink / raw)
To: James Prestwood, iwd
Hi James,
On 10/24/24 8:16 AM, James Prestwood wrote:
> If IPv6 is disabled or not supported at the kernel level writing the
> sysfs settings will fail. A few of them had a support check but this
> patch adds a supported bool to the remainder so we done get errors
> like:
>
> Unable to write drop_unsolicited_na to /proc/sys/net/ipv6/conf/wlan0/drop_unsolicited_na
> ---
> src/station.c | 36 ++++++++++++++++++++++++++++--------
> 1 file changed, 28 insertions(+), 8 deletions(-)
>
Applied, thanks.
Regards,
-Denis
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [PATCH] station: check support for all sysfs settings
2024-10-24 13:16 [PATCH] station: check support for all sysfs settings James Prestwood
2024-10-24 14:16 ` Denis Kenzior
@ 2024-10-25 11:14 ` Martin Petzold
2024-10-25 11:37 ` James Prestwood
1 sibling, 1 reply; 4+ messages in thread
From: Martin Petzold @ 2024-10-25 11:14 UTC (permalink / raw)
To: James Prestwood; +Cc: iwd
Hi James,
Am 24.10.24 um 15:16 schrieb James Prestwood:
> If IPv6 is disabled or not supported at the kernel level writing the
> sysfs settings will fail. A few of them had a support check but this
> patch adds a supported bool to the remainder so we done get errors
> like:
I have IPv6 disabled. What is the impact of this issue without the
patches? Connection losses?
> Unable to write drop_unsolicited_na to /proc/sys/net/ipv6/conf/wlan0/drop_unsolicited_na
> ---
> src/station.c | 36 ++++++++++++++++++++++++++++--------
> 1 file changed, 28 insertions(+), 8 deletions(-)
>
> diff --git a/src/station.c b/src/station.c
> index cef6c66a..34537b26 100644
> --- a/src/station.c
> +++ b/src/station.c
> @@ -74,6 +74,10 @@ static uint32_t roam_retry_interval;
> static bool anqp_disabled;
> static bool supports_arp_evict_nocarrier;
> static bool supports_ndisc_evict_nocarrier;
> +static bool supports_drop_gratuitous_arp;
> +static bool supports_drop_unsolicited_na;
> +static bool supports_ipv4_drop_unicast_in_l2_multicast;
> +static bool supports_ipv6_drop_unicast_in_l2_multicast;
> static struct watchlist event_watches;
> static uint32_t known_networks_watch;
> static uint32_t allowed_bands;
> @@ -1641,10 +1645,13 @@ static void station_set_drop_neighbor_discovery(struct station *station,
> {
> char *v = value ? "1" : "0";
>
> - sysfs_write_ipv4_setting(netdev_get_name(station->netdev),
> - "drop_gratuitous_arp", v);
> - sysfs_write_ipv6_setting(netdev_get_name(station->netdev),
> - "drop_unsolicited_na", v);
> + if (supports_drop_gratuitous_arp)
> + sysfs_write_ipv4_setting(netdev_get_name(station->netdev),
> + "drop_gratuitous_arp", v);
> +
> + if (supports_drop_unsolicited_na)
> + sysfs_write_ipv6_setting(netdev_get_name(station->netdev),
> + "drop_unsolicited_na", v);
> }
>
> static void station_set_drop_unicast_l2_multicast(struct station *station,
> @@ -1652,10 +1659,13 @@ static void station_set_drop_unicast_l2_multicast(struct station *station,
> {
> char *v = value ? "1" : "0";
>
> - sysfs_write_ipv4_setting(netdev_get_name(station->netdev),
> - "drop_unicast_in_l2_multicast", v);
> - sysfs_write_ipv6_setting(netdev_get_name(station->netdev),
> - "drop_unicast_in_l2_multicast", v);
> + if (supports_ipv4_drop_unicast_in_l2_multicast)
> + sysfs_write_ipv4_setting(netdev_get_name(station->netdev),
> + "drop_unicast_in_l2_multicast", v);
> +
> + if (supports_ipv6_drop_unicast_in_l2_multicast)
> + sysfs_write_ipv6_setting(netdev_get_name(station->netdev),
> + "drop_unicast_in_l2_multicast", v);
> }
>
> static void station_signal_agent_notify(struct station *station);
> @@ -5813,6 +5823,16 @@ static int station_init(void)
> "arp_evict_nocarrier");
> supports_ndisc_evict_nocarrier = sysfs_supports_ipv6_setting("all",
> "ndisc_evict_nocarrier");
> + supports_drop_gratuitous_arp = sysfs_supports_ipv4_setting("all",
> + "drop_gratuitous_arp");
> + supports_drop_unsolicited_na = sysfs_supports_ipv6_setting("all",
> + "drop_unsolicited_na");
> + supports_ipv4_drop_unicast_in_l2_multicast =
> + sysfs_supports_ipv4_setting("all",
> + "drop_unicast_in_l2_multicast");
> + supports_ipv6_drop_unicast_in_l2_multicast =
> + sysfs_supports_ipv6_setting("all",
> + "drop_unicast_in_l2_multicast");
>
> watchlist_init(&event_watches, NULL);
>
^ permalink raw reply [flat|nested] 4+ messages in thread* Re: [PATCH] station: check support for all sysfs settings
2024-10-25 11:14 ` Martin Petzold
@ 2024-10-25 11:37 ` James Prestwood
0 siblings, 0 replies; 4+ messages in thread
From: James Prestwood @ 2024-10-25 11:37 UTC (permalink / raw)
To: Martin Petzold; +Cc: iwd
Hi Martin,
On 10/25/24 4:14 AM, Martin Petzold wrote:
> Hi James,
>
> Am 24.10.24 um 15:16 schrieb James Prestwood:
>> If IPv6 is disabled or not supported at the kernel level writing the
>> sysfs settings will fail. A few of them had a support check but this
>> patch adds a supported bool to the remainder so we done get errors
>> like:
> I have IPv6 disabled. What is the impact of this issue without the
> patches? Connection losses?
No functional impact, its just silencing warning that occur when IPv6 is
disabled.
>> Unable to write drop_unsolicited_na to
>> /proc/sys/net/ipv6/conf/wlan0/drop_unsolicited_na
>> ---
>> src/station.c | 36 ++++++++++++++++++++++++++++--------
>> 1 file changed, 28 insertions(+), 8 deletions(-)
>>
>> diff --git a/src/station.c b/src/station.c
>> index cef6c66a..34537b26 100644
>> --- a/src/station.c
>> +++ b/src/station.c
>> @@ -74,6 +74,10 @@ static uint32_t roam_retry_interval;
>> static bool anqp_disabled;
>> static bool supports_arp_evict_nocarrier;
>> static bool supports_ndisc_evict_nocarrier;
>> +static bool supports_drop_gratuitous_arp;
>> +static bool supports_drop_unsolicited_na;
>> +static bool supports_ipv4_drop_unicast_in_l2_multicast;
>> +static bool supports_ipv6_drop_unicast_in_l2_multicast;
>> static struct watchlist event_watches;
>> static uint32_t known_networks_watch;
>> static uint32_t allowed_bands;
>> @@ -1641,10 +1645,13 @@ static void
>> station_set_drop_neighbor_discovery(struct station *station,
>> {
>> char *v = value ? "1" : "0";
>> - sysfs_write_ipv4_setting(netdev_get_name(station->netdev),
>> - "drop_gratuitous_arp", v);
>> - sysfs_write_ipv6_setting(netdev_get_name(station->netdev),
>> - "drop_unsolicited_na", v);
>> + if (supports_drop_gratuitous_arp)
>> + sysfs_write_ipv4_setting(netdev_get_name(station->netdev),
>> + "drop_gratuitous_arp", v);
>> +
>> + if (supports_drop_unsolicited_na)
>> + sysfs_write_ipv6_setting(netdev_get_name(station->netdev),
>> + "drop_unsolicited_na", v);
>> }
>> static void station_set_drop_unicast_l2_multicast(struct station
>> *station,
>> @@ -1652,10 +1659,13 @@ static void
>> station_set_drop_unicast_l2_multicast(struct station *station,
>> {
>> char *v = value ? "1" : "0";
>> - sysfs_write_ipv4_setting(netdev_get_name(station->netdev),
>> - "drop_unicast_in_l2_multicast", v);
>> - sysfs_write_ipv6_setting(netdev_get_name(station->netdev),
>> - "drop_unicast_in_l2_multicast", v);
>> + if (supports_ipv4_drop_unicast_in_l2_multicast)
>> + sysfs_write_ipv4_setting(netdev_get_name(station->netdev),
>> + "drop_unicast_in_l2_multicast", v);
>> +
>> + if (supports_ipv6_drop_unicast_in_l2_multicast)
>> + sysfs_write_ipv6_setting(netdev_get_name(station->netdev),
>> + "drop_unicast_in_l2_multicast", v);
>> }
>> static void station_signal_agent_notify(struct station *station);
>> @@ -5813,6 +5823,16 @@ static int station_init(void)
>> "arp_evict_nocarrier");
>> supports_ndisc_evict_nocarrier =
>> sysfs_supports_ipv6_setting("all",
>> "ndisc_evict_nocarrier");
>> + supports_drop_gratuitous_arp = sysfs_supports_ipv4_setting("all",
>> + "drop_gratuitous_arp");
>> + supports_drop_unsolicited_na = sysfs_supports_ipv6_setting("all",
>> + "drop_unsolicited_na");
>> + supports_ipv4_drop_unicast_in_l2_multicast =
>> + sysfs_supports_ipv4_setting("all",
>> + "drop_unicast_in_l2_multicast");
>> + supports_ipv6_drop_unicast_in_l2_multicast =
>> + sysfs_supports_ipv6_setting("all",
>> + "drop_unicast_in_l2_multicast");
>> watchlist_init(&event_watches, NULL);
>
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2024-10-25 11:37 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-10-24 13:16 [PATCH] station: check support for all sysfs settings James Prestwood
2024-10-24 14:16 ` Denis Kenzior
2024-10-25 11:14 ` Martin Petzold
2024-10-25 11:37 ` James Prestwood
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox