Your little script is flawless, no worries (and yes, I use a USB memory mounted in /srv/…)
since you did not give the -o option in ip command it is difficult to read …
however:
- the change in eth2 is described in my initial article
- as described in my initial article: If valid_lft and preferred_lft times both become zero (EOL) the assigned address disappears after a few seconds and is replaced by nothing (my observation, 100% reproducible).
- as described in my initial article the new valid PD prefix is with eth2 but not with br-lan. No, I can not identify a valid PDaddress in br-lan without network restart. I do not think your nice little script did change anything but reporting the status in detail?!
Did I use it the wrong way?
I anonymized stuff so I think it is not risky to paste the diff here. For me it is difficult to read.
It is the state before initiating the upstream router restart and the state after successful reconnect of the upstream router to the WAN including PD.
Is this the right comparison?
ZZZ 1c1
ZZZ < dump from 2021_01_14_14-04-50
ZZZ —
ZZZ > dump from 2021_01_14_14-10-33
ZZZ 3,6c3,4
ZZZ < J_V_routes6=J_A4
ZZZ < J_T5_netmask=0
ZZZ < K_J_T6= target netmask gateway metric valid source
ZZZ < J_T6_gateway=fe80::ssss:eeee:rrrr:vvvv
ZZZ —
ZZZ > J_V_routes6=J_A5
ZZZ > K_J_T6= target netmask metric valid
ZZZ 8c6,8
ZZZ < RA_ADDRESSES=2a01:c23:680f:800:aaaa:bbbb:cccc:dddd/64,600,3600
ZZZ —
ZZZ > T_J_T10_valid=int
ZZZ > T_J_T11_metric=int
ZZZ > RA_ADDRESSES=fd00::aaaa:bbbb:cccc:dddd/64,0,3601 2a01:c22:bc47:ca00:aaaa:bbbb:cccc:dddd/64,601,3601
ZZZ 11,12c11,13
ZZZ < J_T6_netmask=0
ZZZ < K_J_T7= target netmask metric valid
ZZZ —
ZZZ > J_T6_netmask=64
ZZZ > K_J_T7= target netmask gateway metric valid
ZZZ > J_T7_gateway=fe80::ssss:eeee:rrrr:vvvv
ZZZ 13a15,16
ZZZ > T_J_T11_valid=int
ZZZ > T_J_T12_metric=int
ZZZ 14a18
ZZZ > T_J_A2_2=object
ZZZ 18c22,23
ZZZ < J_V_ip6prefix=J_A10
ZZZ —
ZZZ > T_J_T10_target=string
ZZZ > T_J_T12_valid=int
ZZZ 20,22c25,26
ZZZ < PASSTHRU=00170010fd000000000000007effeeeerrrr0f7a005600102a010c23680f08007effeeeerrrr0f7a
ZZZ < T_J_A4_1=object
ZZZ < J_T8_netmask=56
ZZZ —
ZZZ > PASSTHRU=00170010fd000000000000007effeeeerrrr0f7a
ZZZ > J_T8_netmask=0
ZZZ 25,27c29,34
ZZZ < T_J_A4_2=object
ZZZ < J_T9_netmask=56
ZZZ < SERVER=fe80::ssss:eeee:rrrr:vvvv
ZZZ —
ZZZ > T_J_T11_target=string
ZZZ > T_J_A5_1=object
ZZZ > J_T9_netmask=0
ZZZ > K_J_T10= target netmask metric valid
ZZZ > T_J_T12_target=string
ZZZ > SERVER=
ZZZ 30,31c37,41
ZZZ < J_T3_valid=3600
ZZZ < T_J_A4_3=object
ZZZ —
ZZZ > J_T3_valid=3601
ZZZ > T_J_A5_2=object
ZZZ > J_T10_netmask=64
ZZZ > K_J_T11= target netmask gateway metric valid source
ZZZ > J_T11_gateway=fe80::ssss:eeee:rrrr:vvvv
ZZZ 34,45c44,58
ZZZ < J_T5_metric=384
ZZZ < T_J_A4_4=object
ZZZ < PROTO_IP6ADDR=2a01:c23:680f:800:aaaa:bbbb:cccc:dddd/64/600/3600/1/
ZZZ < J_T3_preferred=600
ZZZ < J_T5_valid=540
ZZZ < T_J_T5_source=string
ZZZ < J_T6_metric=384
ZZZ < T_J_A4_5=object
ZZZ < RA_ROUTES=::/0,fe80::ssss:eeee:rrrr:vvvv,540,384 2a01:c23:680f:800::/64,3600,256 2a01:c23:680f:800::/56,fe80::ssss:eeee:rrrr:vvvv,540,384
ZZZ < J_T6_valid=540
ZZZ < T_J_T6_source=string
ZZZ < J_T7_metric=256
ZZZ —
ZZZ > J_T4_valid=3601
ZZZ > T_J_A5_3=object
ZZZ > J_T11_netmask=56
ZZZ > K_J_T12= target netmask gateway metric valid source
ZZZ > J_T12_gateway=fe80::ssss:eeee:rrrr:vvvv
ZZZ > PROTO_IP6ADDR=fd00::aaaa:bbbb:cccc:dddd/64/0/3601/1/ 2a01:c22:bc47:ca00:aaaa:bbbb:cccc:dddd/64/601/3601/1/
ZZZ > J_T3_preferred=0
ZZZ > J_T6_metric=256
ZZZ > T_J_A5_4=object
ZZZ > J_T12_netmask=56
ZZZ > RA_ROUTES=fd00::/64,3601,256 fd00::/64,fe80::ssss:eeee:rrrr:vvvv,541,512 ::/0,fe80::ssss:eeee:rrrr:vvvv,541,384 2a01:c22:bc47:ca00::/64,3601,256 2a01:c22:bc47:ca00::/56,fe80::ssss:e
eee:rrrr:vvvv,541,384
ZZZ > J_T4_preferred=601
ZZZ > J_T6_valid=3601
ZZZ > J_T7_metric=512
ZZZ > T_J_A5_5=object
ZZZ 47,49c60,61
ZZZ < PROTO_ROUTE6=::/0/fe80::ssss:eeee:rrrr:vvvv/384/540//2a01:c23:680f:8ff::/64 ::/0/fe80::ssss:eeee:rrrr:vvvv/384/540//2a01:c23:680f:800:aaaa:bbbb:cccc:dddd/64 2a01:c23:680f:800::/64//25
6/3600// 2a01:c23:680f:800::/56/fe80::ssss:eeee:rrrr:vvvv/384/540//2a01:c23:680f:8ff::/64 2a01:c23:680f:800::/56/fe80::ssss:eeee:rrrr:vvvv/384/540//2a01:c23:680f:800:aaaa:bbbb:cccc:dddd/64
ZZZ < J_T5_target=::
ZZZ < J_T7_valid=3600
ZZZ —
ZZZ > PROTO_ROUTE6=fd00::/64//256/3601// fd00::/64/fe80::ssss:eeee:rrrr:vvvv/512/541// ::/0/fe80::ssss:eeee:rrrr:vvvv/384/541//fd00::aaaa:bbbb:cccc:dddd/64 ::/0/fe80::ssss:eeee:rrrr:vvvv/38
4/541//2a01:c22:bc47:ca00:aaaa:bbbb:cccc:dddd/64 2a01:c22:bc47:ca00::/64//256/3601// 2a01:c22:bc47:ca00::/56/fe80::ssss:eeee:rrrr:vvvv/384/541//fd00::aaaa:bbbb:cccc:dddd/64 2a01:c22:bc47:ca0
0::/56/fe80::ssss:eeee:rrrr:vvvv/384/541//2a01:c22:bc47:ca00:aaaa:bbbb:cccc:dddd/64
ZZZ > J_T7_valid=541
ZZZ 51c63
ZZZ < T_J_A10_1=string
ZZZ —
ZZZ > T_J_A5_6=object
ZZZ 56,57c68,69
ZZZ < J_T6_target=::
ZZZ < J_T8_valid=540
ZZZ —
ZZZ > J_T6_target=fd00::
ZZZ > J_T8_valid=541
ZZZ 60c72
ZZZ < T_J_A11_1=string
ZZZ —
ZZZ > T_J_A5_7=object
ZZZ 62,63c74,76
ZZZ < J_T7_target=2a01:c23:680f:800::
ZZZ < J_T9_valid=540
ZZZ —
ZZZ > T_J_T4_mask=string
ZZZ > J_T7_target=fd00::
ZZZ > J_T9_valid=541
ZZZ 64a78
ZZZ > J_T10_metric=256
ZZZ 66c80,83
ZZZ < J_T8_target=2a01:c23:680f:800::
ZZZ —
ZZZ > J_T8_target=::
ZZZ > J_T10_valid=3601
ZZZ > J_T11_metric=384
ZZZ > T_J_A13_1=string
ZZZ 68c85,88
ZZZ < J_T9_target=2a01:c23:680f:800::
ZZZ —
ZZZ > J_T9_target=::
ZZZ > J_T11_valid=541
ZZZ > T_J_T11_source=string
ZZZ > J_T12_metric=384
ZZZ 70c90,94
ZZZ < J_T1_passthru=00170010fd000000000000007effeeeerrrr0f7a005600102a010c23680f08007effeeeerrrr0f7a
ZZZ —
ZZZ > J_T1_passthru=00170010fd000000000000007effeeeerrrr0f7a
ZZZ > J_A2_2=J_T4
ZZZ > J_T10_target=2a01:c22:bc47:ca00::
ZZZ > J_T12_valid=541
ZZZ > T_J_T12_source=string
ZZZ 74d97
ZZZ < OPTION_7=00
ZZZ 78,81c101,107
ZZZ < J_A4_1=J_T5
ZZZ < K_J_A2= 1
ZZZ < J_A4_2=J_T6
ZZZ < J_A4_3=J_T7
ZZZ —
ZZZ > J_T11_target=2a01:c22:bc47:ca00::
ZZZ > K_J_A2= 1 2
ZZZ > T_J_T4_ipaddr=string
ZZZ > T_J_T4_offlink=boolean
ZZZ > J_A5_1=J_T6
ZZZ > J_T12_target=2a01:c22:bc47:ca00::
ZZZ > J_A5_2=J_T7
ZZZ 84,85c110
ZZZ < K_J_A4= 1 2 3 4 5
ZZZ < J_A4_4=J_T8
ZZZ —
ZZZ > J_A5_3=J_T8
ZZZ 87,88c112,113
ZZZ < J_T5_source=2a01:c23:680f:8ff::/64
ZZZ < J_A4_5=J_T9
ZZZ —
ZZZ > K_J_A5= 1 2 3 4 5 6 7
ZZZ > J_A5_4=J_T9
ZZZ 90c115
ZZZ < J_T6_source=2a01:c23:680f:800:aaaa:bbbb:cccc:dddd/64
ZZZ —
ZZZ > J_A5_5=J_T10
ZZZ 93c118
ZZZ < J_A10_1=2a01:c23:680f:8ff::/64,487,3487
ZZZ —
ZZZ > J_A5_6=J_T11
ZZZ 95c120
ZZZ < PREFIXES=2a01:c23:680f:8ff::/64,487,3487
ZZZ —
ZZZ > PREFIXES=
ZZZ 97,98c122,123
ZZZ < J_T8_source=2a01:c23:680f:8ff::/64
ZZZ < J_A11_1=fd00::ssss:eeee:rrrr:vvvv
ZZZ —
ZZZ > J_T8_source=fd00::aaaa:bbbb:cccc:dddd/64
ZZZ > J_A5_7=J_T12
ZZZ 101,103c126,129
ZZZ < J_T9_source=2a01:c23:680f:800:aaaa:bbbb:cccc:dddd/64
ZZZ < K_J_A10= 1
ZZZ < K_J_A11= 1
ZZZ —
ZZZ > J_T4_mask=64
ZZZ > J_T9_source=2a01:c22:bc47:ca00:aaaa:bbbb:cccc:dddd/64
ZZZ > J_A13_1=fd00::ssss:eeee:rrrr:vvvv
ZZZ > J_T11_source=fd00::aaaa:bbbb:cccc:dddd/64
ZZZ 105c131
ZZZ < K_J_V= action link_up data keep ip6addr routes6 ip6prefix dns interface
ZZZ —
ZZZ > K_J_V= action link_up data keep ip6addr routes6 dns interface
ZZZ 107,108c133,134
ZZZ < T_J_T5_gateway=string
ZZZ < J_V_dns=J_A11
ZZZ —
ZZZ > J_T12_source=2a01:c22:bc47:ca00:aaaa:bbbb:cccc:dddd/64
ZZZ > J_V_dns=J_A13
ZZZ 110c136
ZZZ < J_T3_ipaddr=2a01:c23:680f:800:aaaa:bbbb:cccc:dddd
ZZZ —
ZZZ > J_T3_ipaddr=fd00::aaaa:bbbb:cccc:dddd
ZZZ 113,114c139
ZZZ < T_J_T5_netmask=string
ZZZ < T_J_T6_gateway=string
ZZZ —
ZZZ > K_J_A13= 1
ZZZ 115a141,142
ZZZ > J_T4_ipaddr=2a01:c22:bc47:ca00:aaaa:bbbb:cccc:dddd
ZZZ > J_T4_offlink=1
ZZZ 116a144
ZZZ > T_J_T7_gateway=string
ZZZ 122d149
ZZZ < T_J_V_ip6prefix=array
ZZZ 127d153
ZZZ < OPTION_86=2a010c23680f08007effeeeerrrr0f7a
ZZZ 133c159,161
ZZZ < ADDRESSES= 2a01:c23:680f:800:aaaa:bbbb:cccc:dddd/64,600,3600
ZZZ —
ZZZ > T_J_T10_netmask=string
ZZZ > T_J_T11_gateway=string
ZZZ > ADDRESSES= fd00::aaaa:bbbb:cccc:dddd/64,0,3601 2a01:c22:bc47:ca00:aaaa:bbbb:cccc:dddd/64,601,3601
ZZZ 135d162
ZZZ < PROTO_PREFIX6=2a01:c23:680f:8ff::/64,487,3487
ZZZ 138c165,167
ZZZ < T_J_T5_metric=int
ZZZ —
ZZZ > T_J_T4_valid=int
ZZZ > T_J_T11_netmask=string
ZZZ > T_J_T12_gateway=string
ZZZ 141d169
ZZZ < T_J_T5_valid=int
ZZZ 142a171,172
ZZZ > T_J_T12_netmask=string
ZZZ > T_J_T4_preferred=int
ZZZ 146d175
ZZZ < T_J_T5_target=string
ZZZ 148a178
ZZZ > K_J_T4= ipaddr mask preferred valid offlink
ZZZ 152,153d181
ZZZ < K_J_T5= target netmask gateway metric valid source
ZZZ < J_T5_gateway=fe80::ssss:eeee:rrrr:vvvv
ZZZ 155a184
ZZZ > T_J_T10_metric=int
ZZZ 176,177c205,208
ZZZ < inet6 2a01:c23:680f:800:aaaa:bbbb:cccc:dddd/64 scope global dynamic noprefixroute
ZZZ < valid_lft 3600sec preferred_lft 600sec
ZZZ —
ZZZ > inet6 2a01:c22:bc47:ca00:aaaa:bbbb:cccc:dddd/64 scope global tentative dynamic noprefixroute
ZZZ > valid_lft 3601sec preferred_lft 601sec
ZZZ > inet6 fd00::aaaa:bbbb:cccc:dddd/64 scope global deprecated dynamic noprefixroute
ZZZ > valid_lft 3601sec preferred_lft 0sec
ZZZ 202,203c233,234
ZZZ < inet6 2a01:c23:680f:8ff::1/64 scope global dynamic noprefixroute
ZZZ < valid_lft 3487sec preferred_lft 487sec
ZZZ —
ZZZ > inet6 2a01:c23:680f:8ff::1/64 scope global deprecated dynamic noprefixroute
ZZZ > valid_lft 3145sec preferred_lft 0sec
ZZZ 236,237c267,270
ZZZ < inet6 2a01:c23:680f:800:aaaa:bbbb:cccc:dddd/64 scope global dynamic noprefixroute
ZZZ < valid_lft 3600sec preferred_lft 600sec
ZZZ —
ZZZ > inet6 2a01:c22:bc47:ca00:aaaa:bbbb:cccc:dddd/64 scope global tentative dynamic noprefixroute
ZZZ > valid_lft 3601sec preferred_lft 601sec
ZZZ > inet6 fd00::aaaa:bbbb:cccc:dddd/64 scope global deprecated dynamic noprefixroute
ZZZ > valid_lft 3601sec preferred_lft 0sec
ZZZ 262,263c295,296
ZZZ < inet6 2a01:c23:680f:8ff::1/64 scope global dynamic noprefixroute
ZZZ < valid_lft 3487sec preferred_lft 487sec
ZZZ —
ZZZ > inet6 2a01:c23:680f:8ff::1/64 scope global deprecated dynamic noprefixroute
ZZZ > valid_lft 3145sec preferred_lft 0sec