* [PATCH net-next 0/5] netconsole: reuse netpoll_parse_ip_addr in configfs helpers
@ 2025-07-18 11:52 Breno Leitao
2025-07-18 11:52 ` [PATCH net-next 1/5] netpoll: Remove unused fields from inet_addr union Breno Leitao
` (4 more replies)
0 siblings, 5 replies; 8+ messages in thread
From: Breno Leitao @ 2025-07-18 11:52 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Simon Horman, Breno Leitao, Andrew Lunn
Cc: netdev, linux-kernel, kernel-team
This patchset refactors the IP address parsing logic in the netconsole
driver to eliminate code duplication and improve maintainability. The
changes centralize IPv4 and IPv6 address parsing into a single function
(netpoll_parse_ip_addr). For that, it needs to teach
netpoll_parse_ip_addr() to handle strings with newlines, which is the
type of string coming from configfs.
Background
The netconsole driver currently has duplicate IP address parsing logic
in both local_ip_store() and remote_ip_store() functions. This
duplication increases the risk of inconsistencies and makes the code
harder to maintain.
Benefits
* Reduced code duplication: ~40 lines of duplicate parsing logic eliminated
* Improved robustness: Centralized parsing reduces the chance of inconsistencies
* Easier to maintain: Code follow more the netdev way
PS: The patches are very well contained in other to help review.
---
Breno Leitao (5):
netpoll: Remove unused fields from inet_addr union
netconsole: move netpoll_parse_ip_addr() earlier for reuse
netconsole: add support for strings with new line in netpoll_parse_ip_addr
netconsole: use netpoll_parse_ip_addr in local_ip_store
netconsole: use netpoll_parse_ip_addr in local_ip_store
drivers/net/netconsole.c | 85 ++++++++++++++++++------------------------------
include/linux/netpoll.h | 3 --
2 files changed, 31 insertions(+), 57 deletions(-)
---
base-commit: d61f6cb6f6ef3c70d2ccc0d9c85c508cb8017da9
change-id: 20250718-netconsole_ref-c1f7254cfb51
Best regards,
--
Breno Leitao <leitao@debian.org>
^ permalink raw reply [flat|nested] 8+ messages in thread
* [PATCH net-next 1/5] netpoll: Remove unused fields from inet_addr union
2025-07-18 11:52 [PATCH net-next 0/5] netconsole: reuse netpoll_parse_ip_addr in configfs helpers Breno Leitao
@ 2025-07-18 11:52 ` Breno Leitao
2025-07-18 11:52 ` [PATCH net-next 2/5] netconsole: move netpoll_parse_ip_addr() earlier for reuse Breno Leitao
` (3 subsequent siblings)
4 siblings, 0 replies; 8+ messages in thread
From: Breno Leitao @ 2025-07-18 11:52 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Simon Horman, Breno Leitao, Andrew Lunn
Cc: netdev, linux-kernel, kernel-team
Clean up the inet_addr union by removing unused fields that are
redundant with existing members:
This simplifies the union structure while maintaining all necessary
functionality for both IPv4 and IPv6 address handling.
Signed-off-by: Breno Leitao <leitao@debian.org>
---
include/linux/netpoll.h | 3 ---
1 file changed, 3 deletions(-)
diff --git a/include/linux/netpoll.h b/include/linux/netpoll.h
index 735e65c3cc114..b5ea9882eda8b 100644
--- a/include/linux/netpoll.h
+++ b/include/linux/netpoll.h
@@ -15,10 +15,7 @@
#include <linux/refcount.h>
union inet_addr {
- __u32 all[4];
__be32 ip;
- __be32 ip6[4];
- struct in_addr in;
struct in6_addr in6;
};
--
2.47.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH net-next 2/5] netconsole: move netpoll_parse_ip_addr() earlier for reuse
2025-07-18 11:52 [PATCH net-next 0/5] netconsole: reuse netpoll_parse_ip_addr in configfs helpers Breno Leitao
2025-07-18 11:52 ` [PATCH net-next 1/5] netpoll: Remove unused fields from inet_addr union Breno Leitao
@ 2025-07-18 11:52 ` Breno Leitao
2025-07-18 17:03 ` Jakub Kicinski
2025-07-19 0:03 ` kernel test robot
2025-07-18 11:52 ` [PATCH net-next 3/5] netconsole: add support for strings with new line in netpoll_parse_ip_addr Breno Leitao
` (2 subsequent siblings)
4 siblings, 2 replies; 8+ messages in thread
From: Breno Leitao @ 2025-07-18 11:52 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Simon Horman, Breno Leitao, Andrew Lunn
Cc: netdev, linux-kernel, kernel-team
Move netpoll_parse_ip_addr() earlier in the file to be reused in
other functions, such as local_ip_store(). This avoids duplicate
address parsing logic and centralizes validation for both IPv4
and IPv6 string input.
No functional changes intended.
Signed-off-by: Breno Leitao <leitao@debian.org>
---
drivers/net/netconsole.c | 40 ++++++++++++++++++++--------------------
1 file changed, 20 insertions(+), 20 deletions(-)
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
index e3722de08ea9f..be946e8be72b1 100644
--- a/drivers/net/netconsole.c
+++ b/drivers/net/netconsole.c
@@ -360,6 +360,26 @@ static void trim_newline(char *s, size_t maxlen)
s[len - 1] = '\0';
}
+static int netpoll_parse_ip_addr(const char *str, union inet_addr *addr)
+{
+ const char *end;
+
+ if (!strchr(str, ':') &&
+ in4_pton(str, -1, (void *)addr, -1, &end) > 0) {
+ if (!*end)
+ return 0;
+ }
+ if (in6_pton(str, -1, addr->in6.s6_addr, -1, &end) > 0) {
+#if IS_ENABLED(CONFIG_IPV6)
+ if (!*end)
+ return 1;
+#else
+ return -1;
+#endif
+ }
+ return -1;
+}
+
/*
* Attribute operations for netconsole_target.
*/
@@ -1742,26 +1762,6 @@ static void write_msg(struct console *con, const char *msg, unsigned int len)
spin_unlock_irqrestore(&target_list_lock, flags);
}
-static int netpoll_parse_ip_addr(const char *str, union inet_addr *addr)
-{
- const char *end;
-
- if (!strchr(str, ':') &&
- in4_pton(str, -1, (void *)addr, -1, &end) > 0) {
- if (!*end)
- return 0;
- }
- if (in6_pton(str, -1, addr->in6.s6_addr, -1, &end) > 0) {
-#if IS_ENABLED(CONFIG_IPV6)
- if (!*end)
- return 1;
-#else
- return -1;
-#endif
- }
- return -1;
-}
-
static int netconsole_parser_cmdline(struct netpoll *np, char *opt)
{
bool ipversion_set = false;
--
2.47.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH net-next 3/5] netconsole: add support for strings with new line in netpoll_parse_ip_addr
2025-07-18 11:52 [PATCH net-next 0/5] netconsole: reuse netpoll_parse_ip_addr in configfs helpers Breno Leitao
2025-07-18 11:52 ` [PATCH net-next 1/5] netpoll: Remove unused fields from inet_addr union Breno Leitao
2025-07-18 11:52 ` [PATCH net-next 2/5] netconsole: move netpoll_parse_ip_addr() earlier for reuse Breno Leitao
@ 2025-07-18 11:52 ` Breno Leitao
2025-07-18 11:52 ` [PATCH net-next 4/5] netconsole: use netpoll_parse_ip_addr in local_ip_store Breno Leitao
2025-07-18 11:52 ` [PATCH net-next 5/5] " Breno Leitao
4 siblings, 0 replies; 8+ messages in thread
From: Breno Leitao @ 2025-07-18 11:52 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Simon Horman, Breno Leitao, Andrew Lunn
Cc: netdev, linux-kernel, kernel-team
The current IP address parsing logic fails when the input string
contains a trailing newline character. This can occur when IP
addresses are provided through configfs, which contains newlines in
a const buffer.
Teach netpoll_parse_ip_addr() how to ignore newlines at the end of the
IPs. Also, simplify the code by:
* No need to check for separators. Try to parse ipv4, if it fails try
ipv6 similarly to ceph_pton()
* If ipv6 is not supported, don't call in6_pton() at all.
Signed-off-by: Breno Leitao <leitao@debian.org>
---
drivers/net/netconsole.c | 23 ++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
index be946e8be72b1..7ea265752e021 100644
--- a/drivers/net/netconsole.c
+++ b/drivers/net/netconsole.c
@@ -363,20 +363,21 @@ static void trim_newline(char *s, size_t maxlen)
static int netpoll_parse_ip_addr(const char *str, union inet_addr *addr)
{
const char *end;
+ int len;
- if (!strchr(str, ':') &&
- in4_pton(str, -1, (void *)addr, -1, &end) > 0) {
- if (!*end)
- return 0;
- }
- if (in6_pton(str, -1, addr->in6.s6_addr, -1, &end) > 0) {
-#if IS_ENABLED(CONFIG_IPV6)
- if (!*end)
- return 1;
-#else
+ len = strlen(str);
+ if (!len)
return -1;
+
+ if (str[len - 1] == '\n')
+ len -= 1;
+
+ if (in4_pton(str, len, (void *)addr, -1, &end) > 0)
+ return 0;
+#if IS_ENABLED(CONFIG_IPV6)
+ if (in6_pton(str, len, addr->in6.s6_addr, -1, &end) > 0)
+ return 1;
#endif
- }
return -1;
}
--
2.47.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH net-next 4/5] netconsole: use netpoll_parse_ip_addr in local_ip_store
2025-07-18 11:52 [PATCH net-next 0/5] netconsole: reuse netpoll_parse_ip_addr in configfs helpers Breno Leitao
` (2 preceding siblings ...)
2025-07-18 11:52 ` [PATCH net-next 3/5] netconsole: add support for strings with new line in netpoll_parse_ip_addr Breno Leitao
@ 2025-07-18 11:52 ` Breno Leitao
2025-07-18 11:52 ` [PATCH net-next 5/5] " Breno Leitao
4 siblings, 0 replies; 8+ messages in thread
From: Breno Leitao @ 2025-07-18 11:52 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Simon Horman, Breno Leitao, Andrew Lunn
Cc: netdev, linux-kernel, kernel-team
Replace manual IP address parsing with a call to netpoll_parse_ip_addr
in local_ip_store(), simplifying the code and reducing the chance of
errors.
Also, remove the pr_err() if the user enters an invalid value in
configfs entries. pr_err() is not the best way to alert user that the
configuration is invalid.
Signed-off-by: Breno Leitao <leitao@debian.org>
---
drivers/net/netconsole.c | 22 +++++-----------------
1 file changed, 5 insertions(+), 17 deletions(-)
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
index 7ea265752e021..3044349c5fe37 100644
--- a/drivers/net/netconsole.c
+++ b/drivers/net/netconsole.c
@@ -751,6 +751,7 @@ static ssize_t local_ip_store(struct config_item *item, const char *buf,
{
struct netconsole_target *nt = to_target(item);
ssize_t ret = -EINVAL;
+ int ipv6;
mutex_lock(&dynamic_netconsole_mutex);
if (nt->enabled) {
@@ -759,23 +760,10 @@ static ssize_t local_ip_store(struct config_item *item, const char *buf,
goto out_unlock;
}
- if (strnchr(buf, count, ':')) {
- const char *end;
-
- if (in6_pton(buf, count, nt->np.local_ip.in6.s6_addr, -1, &end) > 0) {
- if (*end && *end != '\n') {
- pr_err("invalid IPv6 address at: <%c>\n", *end);
- goto out_unlock;
- }
- nt->np.ipv6 = true;
- } else
- goto out_unlock;
- } else {
- if (!nt->np.ipv6)
- nt->np.local_ip.ip = in_aton(buf);
- else
- goto out_unlock;
- }
+ ipv6 = netpoll_parse_ip_addr(buf, &nt->np.local_ip);
+ if (ipv6 == -1)
+ goto out_unlock;
+ nt->np.ipv6 = ipv6;
ret = strnlen(buf, count);
out_unlock:
--
2.47.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH net-next 5/5] netconsole: use netpoll_parse_ip_addr in local_ip_store
2025-07-18 11:52 [PATCH net-next 0/5] netconsole: reuse netpoll_parse_ip_addr in configfs helpers Breno Leitao
` (3 preceding siblings ...)
2025-07-18 11:52 ` [PATCH net-next 4/5] netconsole: use netpoll_parse_ip_addr in local_ip_store Breno Leitao
@ 2025-07-18 11:52 ` Breno Leitao
4 siblings, 0 replies; 8+ messages in thread
From: Breno Leitao @ 2025-07-18 11:52 UTC (permalink / raw)
To: David S. Miller, Eric Dumazet, Jakub Kicinski, Paolo Abeni,
Simon Horman, Breno Leitao, Andrew Lunn
Cc: netdev, linux-kernel, kernel-team
Replace manual IP address parsing with a call to netpoll_parse_ip_addr
in remote_ip_store(), simplifying the code and reducing the chance of
errors.
The error message got removed, since it is not a good practice to
pr_err() if used pass a wrong value in configfs.
Signed-off-by: Breno Leitao <leitao@debian.org>
---
drivers/net/netconsole.c | 22 +++++-----------------
1 file changed, 5 insertions(+), 17 deletions(-)
diff --git a/drivers/net/netconsole.c b/drivers/net/netconsole.c
index 3044349c5fe37..de6f1a7c24cc0 100644
--- a/drivers/net/netconsole.c
+++ b/drivers/net/netconsole.c
@@ -776,6 +776,7 @@ static ssize_t remote_ip_store(struct config_item *item, const char *buf,
{
struct netconsole_target *nt = to_target(item);
ssize_t ret = -EINVAL;
+ int ipv6;
mutex_lock(&dynamic_netconsole_mutex);
if (nt->enabled) {
@@ -784,23 +785,10 @@ static ssize_t remote_ip_store(struct config_item *item, const char *buf,
goto out_unlock;
}
- if (strnchr(buf, count, ':')) {
- const char *end;
-
- if (in6_pton(buf, count, nt->np.remote_ip.in6.s6_addr, -1, &end) > 0) {
- if (*end && *end != '\n') {
- pr_err("invalid IPv6 address at: <%c>\n", *end);
- goto out_unlock;
- }
- nt->np.ipv6 = true;
- } else
- goto out_unlock;
- } else {
- if (!nt->np.ipv6)
- nt->np.remote_ip.ip = in_aton(buf);
- else
- goto out_unlock;
- }
+ ipv6 = netpoll_parse_ip_addr(buf, &nt->np.remote_ip);
+ if (ipv6 == -1)
+ goto out_unlock;
+ nt->np.ipv6 = ipv6;
ret = strnlen(buf, count);
out_unlock:
--
2.47.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH net-next 2/5] netconsole: move netpoll_parse_ip_addr() earlier for reuse
2025-07-18 11:52 ` [PATCH net-next 2/5] netconsole: move netpoll_parse_ip_addr() earlier for reuse Breno Leitao
@ 2025-07-18 17:03 ` Jakub Kicinski
2025-07-19 0:03 ` kernel test robot
1 sibling, 0 replies; 8+ messages in thread
From: Jakub Kicinski @ 2025-07-18 17:03 UTC (permalink / raw)
To: Breno Leitao
Cc: David S. Miller, Eric Dumazet, Paolo Abeni, Simon Horman,
Andrew Lunn, netdev, linux-kernel, kernel-team
On Fri, 18 Jul 2025 04:52:02 -0700 Breno Leitao wrote:
> Move netpoll_parse_ip_addr() earlier in the file to be reused in
> other functions, such as local_ip_store(). This avoids duplicate
> address parsing logic and centralizes validation for both IPv4
> and IPv6 string input.
>
> No functional changes intended.
You're moving it to the section of the file under
CONFIG_NETCONSOLE_DYNAMIC breaking the build if dynamic is disabled
--
pw-bot: cr
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH net-next 2/5] netconsole: move netpoll_parse_ip_addr() earlier for reuse
2025-07-18 11:52 ` [PATCH net-next 2/5] netconsole: move netpoll_parse_ip_addr() earlier for reuse Breno Leitao
2025-07-18 17:03 ` Jakub Kicinski
@ 2025-07-19 0:03 ` kernel test robot
1 sibling, 0 replies; 8+ messages in thread
From: kernel test robot @ 2025-07-19 0:03 UTC (permalink / raw)
To: Breno Leitao, David S. Miller, Eric Dumazet, Jakub Kicinski,
Paolo Abeni, Simon Horman, Andrew Lunn
Cc: oe-kbuild-all, netdev, linux-kernel, kernel-team
Hi Breno,
kernel test robot noticed the following build errors:
[auto build test ERROR on d61f6cb6f6ef3c70d2ccc0d9c85c508cb8017da9]
url: https://github.com/intel-lab-lkp/linux/commits/Breno-Leitao/netpoll-Remove-unused-fields-from-inet_addr-union/20250718-195552
base: d61f6cb6f6ef3c70d2ccc0d9c85c508cb8017da9
patch link: https://lore.kernel.org/r/20250718-netconsole_ref-v1-2-86ef253b7a7a%40debian.org
patch subject: [PATCH net-next 2/5] netconsole: move netpoll_parse_ip_addr() earlier for reuse
config: arc-randconfig-002-20250719 (https://download.01.org/0day-ci/archive/20250719/202507190704.mjDNQvmd-lkp@intel.com/config)
compiler: arc-linux-gcc (GCC) 15.1.0
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20250719/202507190704.mjDNQvmd-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202507190704.mjDNQvmd-lkp@intel.com/
All errors (new ones prefixed by >>):
drivers/net/netconsole.c: In function 'netconsole_parser_cmdline':
>> drivers/net/netconsole.c:1789:24: error: implicit declaration of function 'netpoll_parse_ip_addr' [-Wimplicit-function-declaration]
1789 | ipv6 = netpoll_parse_ip_addr(cur, &np->local_ip);
| ^~~~~~~~~~~~~~~~~~~~~
vim +/netpoll_parse_ip_addr +1789 drivers/net/netconsole.c
^1da177e4c3f415 Linus Torvalds 2005-04-16 1764
abebef96aab12da Breno Leitao 2025-06-13 1765 static int netconsole_parser_cmdline(struct netpoll *np, char *opt)
5a34c9a8536511b Breno Leitao 2025-06-13 1766 {
5a34c9a8536511b Breno Leitao 2025-06-13 1767 bool ipversion_set = false;
abebef96aab12da Breno Leitao 2025-06-13 1768 char *cur = opt;
abebef96aab12da Breno Leitao 2025-06-13 1769 char *delim;
abebef96aab12da Breno Leitao 2025-06-13 1770 int ipv6;
5a34c9a8536511b Breno Leitao 2025-06-13 1771
5a34c9a8536511b Breno Leitao 2025-06-13 1772 if (*cur != '@') {
d79206451f4f99a Breno Leitao 2025-06-13 1773 delim = strchr(cur, '@');
d79206451f4f99a Breno Leitao 2025-06-13 1774 if (!delim)
5a34c9a8536511b Breno Leitao 2025-06-13 1775 goto parse_failed;
5a34c9a8536511b Breno Leitao 2025-06-13 1776 *delim = 0;
5a34c9a8536511b Breno Leitao 2025-06-13 1777 if (kstrtou16(cur, 10, &np->local_port))
5a34c9a8536511b Breno Leitao 2025-06-13 1778 goto parse_failed;
5a34c9a8536511b Breno Leitao 2025-06-13 1779 cur = delim;
5a34c9a8536511b Breno Leitao 2025-06-13 1780 }
5a34c9a8536511b Breno Leitao 2025-06-13 1781 cur++;
5a34c9a8536511b Breno Leitao 2025-06-13 1782
5a34c9a8536511b Breno Leitao 2025-06-13 1783 if (*cur != '/') {
5a34c9a8536511b Breno Leitao 2025-06-13 1784 ipversion_set = true;
d79206451f4f99a Breno Leitao 2025-06-13 1785 delim = strchr(cur, '/');
d79206451f4f99a Breno Leitao 2025-06-13 1786 if (!delim)
5a34c9a8536511b Breno Leitao 2025-06-13 1787 goto parse_failed;
5a34c9a8536511b Breno Leitao 2025-06-13 1788 *delim = 0;
5a34c9a8536511b Breno Leitao 2025-06-13 @1789 ipv6 = netpoll_parse_ip_addr(cur, &np->local_ip);
5a34c9a8536511b Breno Leitao 2025-06-13 1790 if (ipv6 < 0)
5a34c9a8536511b Breno Leitao 2025-06-13 1791 goto parse_failed;
5a34c9a8536511b Breno Leitao 2025-06-13 1792 else
5a34c9a8536511b Breno Leitao 2025-06-13 1793 np->ipv6 = (bool)ipv6;
5a34c9a8536511b Breno Leitao 2025-06-13 1794 cur = delim;
5a34c9a8536511b Breno Leitao 2025-06-13 1795 }
5a34c9a8536511b Breno Leitao 2025-06-13 1796 cur++;
5a34c9a8536511b Breno Leitao 2025-06-13 1797
5a34c9a8536511b Breno Leitao 2025-06-13 1798 if (*cur != ',') {
5a34c9a8536511b Breno Leitao 2025-06-13 1799 /* parse out dev_name or dev_mac */
d79206451f4f99a Breno Leitao 2025-06-13 1800 delim = strchr(cur, ',');
d79206451f4f99a Breno Leitao 2025-06-13 1801 if (!delim)
5a34c9a8536511b Breno Leitao 2025-06-13 1802 goto parse_failed;
5a34c9a8536511b Breno Leitao 2025-06-13 1803 *delim = 0;
5a34c9a8536511b Breno Leitao 2025-06-13 1804
5a34c9a8536511b Breno Leitao 2025-06-13 1805 np->dev_name[0] = '\0';
5a34c9a8536511b Breno Leitao 2025-06-13 1806 eth_broadcast_addr(np->dev_mac);
5a34c9a8536511b Breno Leitao 2025-06-13 1807 if (!strchr(cur, ':'))
5a34c9a8536511b Breno Leitao 2025-06-13 1808 strscpy(np->dev_name, cur, sizeof(np->dev_name));
5a34c9a8536511b Breno Leitao 2025-06-13 1809 else if (!mac_pton(cur, np->dev_mac))
5a34c9a8536511b Breno Leitao 2025-06-13 1810 goto parse_failed;
5a34c9a8536511b Breno Leitao 2025-06-13 1811
5a34c9a8536511b Breno Leitao 2025-06-13 1812 cur = delim;
5a34c9a8536511b Breno Leitao 2025-06-13 1813 }
5a34c9a8536511b Breno Leitao 2025-06-13 1814 cur++;
5a34c9a8536511b Breno Leitao 2025-06-13 1815
5a34c9a8536511b Breno Leitao 2025-06-13 1816 if (*cur != '@') {
5a34c9a8536511b Breno Leitao 2025-06-13 1817 /* dst port */
d79206451f4f99a Breno Leitao 2025-06-13 1818 delim = strchr(cur, '@');
d79206451f4f99a Breno Leitao 2025-06-13 1819 if (!delim)
5a34c9a8536511b Breno Leitao 2025-06-13 1820 goto parse_failed;
5a34c9a8536511b Breno Leitao 2025-06-13 1821 *delim = 0;
5a34c9a8536511b Breno Leitao 2025-06-13 1822 if (*cur == ' ' || *cur == '\t')
5a34c9a8536511b Breno Leitao 2025-06-13 1823 np_info(np, "warning: whitespace is not allowed\n");
5a34c9a8536511b Breno Leitao 2025-06-13 1824 if (kstrtou16(cur, 10, &np->remote_port))
5a34c9a8536511b Breno Leitao 2025-06-13 1825 goto parse_failed;
5a34c9a8536511b Breno Leitao 2025-06-13 1826 cur = delim;
5a34c9a8536511b Breno Leitao 2025-06-13 1827 }
5a34c9a8536511b Breno Leitao 2025-06-13 1828 cur++;
5a34c9a8536511b Breno Leitao 2025-06-13 1829
5a34c9a8536511b Breno Leitao 2025-06-13 1830 /* dst ip */
d79206451f4f99a Breno Leitao 2025-06-13 1831 delim = strchr(cur, '/');
d79206451f4f99a Breno Leitao 2025-06-13 1832 if (!delim)
5a34c9a8536511b Breno Leitao 2025-06-13 1833 goto parse_failed;
5a34c9a8536511b Breno Leitao 2025-06-13 1834 *delim = 0;
5a34c9a8536511b Breno Leitao 2025-06-13 1835 ipv6 = netpoll_parse_ip_addr(cur, &np->remote_ip);
5a34c9a8536511b Breno Leitao 2025-06-13 1836 if (ipv6 < 0)
5a34c9a8536511b Breno Leitao 2025-06-13 1837 goto parse_failed;
5a34c9a8536511b Breno Leitao 2025-06-13 1838 else if (ipversion_set && np->ipv6 != (bool)ipv6)
5a34c9a8536511b Breno Leitao 2025-06-13 1839 goto parse_failed;
5a34c9a8536511b Breno Leitao 2025-06-13 1840 else
5a34c9a8536511b Breno Leitao 2025-06-13 1841 np->ipv6 = (bool)ipv6;
5a34c9a8536511b Breno Leitao 2025-06-13 1842 cur = delim + 1;
5a34c9a8536511b Breno Leitao 2025-06-13 1843
5a34c9a8536511b Breno Leitao 2025-06-13 1844 if (*cur != 0) {
5a34c9a8536511b Breno Leitao 2025-06-13 1845 /* MAC address */
5a34c9a8536511b Breno Leitao 2025-06-13 1846 if (!mac_pton(cur, np->remote_mac))
5a34c9a8536511b Breno Leitao 2025-06-13 1847 goto parse_failed;
5a34c9a8536511b Breno Leitao 2025-06-13 1848 }
5a34c9a8536511b Breno Leitao 2025-06-13 1849
abebef96aab12da Breno Leitao 2025-06-13 1850 netconsole_print_banner(np);
5a34c9a8536511b Breno Leitao 2025-06-13 1851
5a34c9a8536511b Breno Leitao 2025-06-13 1852 return 0;
5a34c9a8536511b Breno Leitao 2025-06-13 1853
5a34c9a8536511b Breno Leitao 2025-06-13 1854 parse_failed:
5a34c9a8536511b Breno Leitao 2025-06-13 1855 np_info(np, "couldn't parse config at '%s'!\n", cur);
5a34c9a8536511b Breno Leitao 2025-06-13 1856 return -1;
5a34c9a8536511b Breno Leitao 2025-06-13 1857 }
5a34c9a8536511b Breno Leitao 2025-06-13 1858
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2025-07-19 0:04 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-18 11:52 [PATCH net-next 0/5] netconsole: reuse netpoll_parse_ip_addr in configfs helpers Breno Leitao
2025-07-18 11:52 ` [PATCH net-next 1/5] netpoll: Remove unused fields from inet_addr union Breno Leitao
2025-07-18 11:52 ` [PATCH net-next 2/5] netconsole: move netpoll_parse_ip_addr() earlier for reuse Breno Leitao
2025-07-18 17:03 ` Jakub Kicinski
2025-07-19 0:03 ` kernel test robot
2025-07-18 11:52 ` [PATCH net-next 3/5] netconsole: add support for strings with new line in netpoll_parse_ip_addr Breno Leitao
2025-07-18 11:52 ` [PATCH net-next 4/5] netconsole: use netpoll_parse_ip_addr in local_ip_store Breno Leitao
2025-07-18 11:52 ` [PATCH net-next 5/5] " Breno Leitao
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).