@@ -415,6 +415,9 @@ bbl_session_reset(bbl_session_s *session) {
415415 session -> ipv6_prefix .len = 0 ;
416416 session -> delegated_ipv6_prefix .len = 0 ;
417417 session -> arp_resolved = false;
418+ if (session -> dhcp_state > BBL_DHCP_DISABLED ) {
419+ session -> dhcp_state = BBL_DHCP_INIT ;
420+ }
418421 session -> icmpv6_ra_received = false;
419422 if (session -> dhcpv6_state > BBL_DHCP_DISABLED ) {
420423 session -> dhcpv6_state = BBL_DHCP_INIT ;
@@ -1179,20 +1182,22 @@ bbl_session_substate_pppoe(bbl_session_s *session)
11791182const char *
11801183bbl_session_substate_ipoe (bbl_session_s * session )
11811184{
1182- if (session -> access_config -> ipv4_enable ) {
1183- if (session -> dhcp_state > BBL_DHCP_DISABLED && session -> dhcp_state < BBL_DHCP_BOUND ) {
1184- return "DHCPv4 pending" ;
1185- }
1186- if (!session -> arp_resolved ) {
1187- return "ARP not resolved" ;
1188- }
1189- }
1190- if (session -> access_config -> ipv6_enable ) {
1191- if (session -> dhcpv6_state > BBL_DHCP_DISABLED && session -> dhcpv6_state < BBL_DHCP_BOUND ) {
1192- return "DHCPv6 pending" ;
1185+ if (session -> session_state == BBL_IPOE_SETUP ) {
1186+ if (session -> access_config -> ipv4_enable ) {
1187+ if (session -> dhcp_state > BBL_DHCP_DISABLED && session -> dhcp_state < BBL_DHCP_BOUND ) {
1188+ return "DHCPv4 pending" ;
1189+ }
1190+ if (!session -> arp_resolved ) {
1191+ return "ARP not resolved" ;
1192+ }
11931193 }
1194- if (!session -> icmpv6_ra_received ) {
1195- return "Wait for ICMPv6 RA" ;
1194+ if (session -> access_config -> ipv6_enable ) {
1195+ if (session -> dhcpv6_state > BBL_DHCP_DISABLED && session -> dhcpv6_state < BBL_DHCP_BOUND ) {
1196+ return "DHCPv6 pending" ;
1197+ }
1198+ if (!session -> icmpv6_ra_received ) {
1199+ return "Wait for ICMPv6 RA" ;
1200+ }
11961201 }
11971202 }
11981203 return NULL ;
0 commit comments