From 660dbb89eb5b971f1f69dc96bf057df52adda65d Mon Sep 17 00:00:00 2001 From: Christian Giese Date: Wed, 21 Jul 2021 15:39:43 +0200 Subject: [PATCH] Fixed #33 IPoE IPv6 only not established --- src/bbl_config.c | 29 ++++++++++++++++------------- 1 file changed, 16 insertions(+), 13 deletions(-) diff --git a/src/bbl_config.c b/src/bbl_config.c index a94c8dd1..5c0e2e65 100644 --- a/src/bbl_config.c +++ b/src/bbl_config.c @@ -432,30 +432,34 @@ json_parse_access_interface (bbl_ctx_s *ctx, json_t *access_interface, bbl_acces } else { access_config->ip6cp_enable = ctx->config.ip6cp_enable; } - value = json_object_get(access_interface, "ipv4"); - if (json_is_boolean(value)) { - access_config->ipv4_enable = json_boolean_value(value); - } else { - access_config->ipv4_enable = ctx->config.ipv4_enable; - } - value = json_object_get(access_interface, "ipv6"); - if (json_is_boolean(value)) { - access_config->ipv6_enable = json_boolean_value(value); - } else { - access_config->ipv6_enable = ctx->config.ipv6_enable; - } value = json_object_get(access_interface, "dhcp"); if (json_is_boolean(value)) { access_config->dhcp_enable = json_boolean_value(value); } else { access_config->dhcp_enable = ctx->config.dhcp_enable; } + value = json_object_get(access_interface, "ipv4"); + if (json_is_boolean(value)) { + access_config->ipv4_enable = json_boolean_value(value); + } else { + if (access_config->dhcp_enable || access_config->static_ip) { + access_config->ipv4_enable = ctx->config.ipv4_enable; + } else { + access_config->ipv4_enable = false; + } + } value = json_object_get(access_interface, "dhcpv6"); if (json_is_boolean(value)) { access_config->dhcpv6_enable = json_boolean_value(value); } else { access_config->dhcpv6_enable = ctx->config.dhcpv6_enable; } + value = json_object_get(access_interface, "ipv6"); + if (json_is_boolean(value)) { + access_config->ipv6_enable = json_boolean_value(value); + } else { + access_config->ipv6_enable = ctx->config.ipv6_enable; + } value = json_object_get(access_interface, "igmp-autostart"); if (json_is_boolean(value)) { access_config->igmp_autostart = json_boolean_value(value); @@ -506,7 +510,6 @@ json_parse_access_interface (bbl_ctx_s *ctx, json_t *access_interface, bbl_acces fprintf(stderr, "JSON config error: Missing access->cfm-ma-name\n"); return false; } - return true; }