|
1 | 1 | /* |
2 | 2 | * Copyright (C) 2021 Google LLC |
3 | | - * 2023 Krzysztof Cabaj <kcabaj@gmail.com> |
| 3 | + * 2024 Krzysztof Cabaj <kcabaj@gmail.com> |
4 | 4 | * |
5 | 5 | * This file is subject to the terms and conditions of the GNU Lesser |
6 | 6 | * General Public License v2.1. See the file LICENSE in the top level |
@@ -120,8 +120,8 @@ static void _netif_list(struct netif *netif) |
120 | 120 | #ifdef MODULE_LWIP_IPV4 |
121 | 121 | static void _usage_add4(char *cmd) |
122 | 122 | { |
123 | | - printf("usage: %s add4 <interface> <IPv4>/<prefix>\n", cmd); |
124 | | - printf("usage: %s add4 <interface> <IPv4>/<prefix> gw <IPv4>\n", cmd); |
| 123 | + printf("usage: %s add <interface> <IPv4>/<prefix>\n", cmd); |
| 124 | + printf("usage: %s add <interface> <IPv4>/<prefix> gw <IPv4>\n", cmd); |
125 | 125 | } |
126 | 126 |
|
127 | 127 | static void _lwip_prefix_to_subnet(int prefix, ip4_addr_t *subnet) |
@@ -219,14 +219,14 @@ static int _lwip_netif_add4(int argc, char **argv) |
219 | 219 | #ifdef MODULE_LWIP_IPV6 |
220 | 220 | static void _usage_add6(char *cmd) |
221 | 221 | { |
222 | | - printf("usage: %s add6 - currently not implemented\n", cmd); |
| 222 | + printf("usage: %s add for LWIP IPv6 currently not implemented\n", cmd); |
223 | 223 | } |
224 | 224 |
|
225 | 225 | static int _lwip_netif_add6(int argc, char **argv) |
226 | 226 | { |
227 | 227 | (void)argc; |
228 | 228 | (void)argv; |
229 | | - printf("error: currently not implemented\n"); |
| 229 | + printf("error: LWIP IPv6 configuration currently not implemented\n"); |
230 | 230 |
|
231 | 231 | return 0; |
232 | 232 | } |
@@ -267,14 +267,46 @@ static int _lwip_netif_config(int argc, char **argv) |
267 | 267 | if (strcmp("help", argv[1]) == 0) { |
268 | 268 | _lwip_netif_help(argv[0]); |
269 | 269 | } |
| 270 | +#if defined(MODULE_LWIP_IPV4) || defined(MODULE_LWIP_IPV6) |
| 271 | + else if (strcmp("add", argv[1]) == 0) { |
| 272 | + if (argc != 4 && argc != 6) { |
| 273 | + printf("error: invalid number of parameters\n"); |
270 | 274 | #ifdef MODULE_LWIP_IPV4 |
271 | | - else if (strcmp("add4", argv[1]) == 0) { |
272 | | - _lwip_netif_add4(argc, argv); |
273 | | - } |
| 275 | + _usage_add4(argv[0]); |
274 | 276 | #endif |
275 | 277 | #ifdef MODULE_LWIP_IPV6 |
276 | | - else if (strcmp("add6", argv[1]) == 0) { |
277 | | - _lwip_netif_add6(argc, argv); |
| 278 | + _usage_add6(argv[0]); |
| 279 | +#endif |
| 280 | + return 0; |
| 281 | + } |
| 282 | + |
| 283 | + char *prefix_ptr = strchr(argv[3], '/'); |
| 284 | + |
| 285 | + if (prefix_ptr == NULL) { |
| 286 | + printf("error: provide IP address with prefix\n"); |
| 287 | + return 0; |
| 288 | + } |
| 289 | + |
| 290 | + *prefix_ptr = 0; |
| 291 | + |
| 292 | +#ifdef MODULE_LWIP_IPV4 |
| 293 | + ipv4_addr_t ip4; |
| 294 | + |
| 295 | + if (ipv4_addr_from_buf(&ip4, argv[3], strlen(argv[3])) != NULL) { |
| 296 | + *prefix_ptr = '/'; |
| 297 | + _lwip_netif_add4(argc, argv); |
| 298 | + return 1; |
| 299 | + } |
| 300 | +#endif |
| 301 | +#ifdef MODULE_LWIP_IPV6 |
| 302 | + ipv6_addr_t ip6; |
| 303 | + if (ipv6_addr_from_buf(&ip6, argv[3], strlen(argv[3])) != NULL) { |
| 304 | + *prefix_ptr = '/'; |
| 305 | + _lwip_netif_add6(argc, argv); |
| 306 | + return 1; |
| 307 | + } |
| 308 | +#endif |
| 309 | + printf("error: use proper IPv4 or IPv6 address\n"); |
278 | 310 | } |
279 | 311 | #endif |
280 | 312 | else { |
|
0 commit comments