Richard Hansen
76afbb6673
_read_config: Add infrastructure for host-dependent validation
...
This is a preparatory step for separating recap variables from config
variables.
2024-09-02 03:55:09 -04:00
Richard Hansen
0f1ea65fd7
_read_config: Minor refactor for readability and maintainability
2024-09-02 03:55:09 -04:00
Richard Hansen
ac67c04f13
_read_config: Check host definedness, not existence
2024-09-02 03:55:09 -04:00
Richard Hansen
a18efcbe32
Force an update if a host's protocol changes
2024-09-02 03:55:09 -04:00
Richard Hansen
1e3bebc60d
Object-oriented protocol definitions
...
This improves readability and will make it easier to refactor to fix
issues or add features.
2024-09-02 03:55:09 -04:00
Richard Hansen
2da08cceb9
Convert static list of config change detection vars to per-protocol
2024-09-02 03:55:09 -04:00
Richard Hansen
273af1c821
nic_updateable: Ignore non-recap vars when detecting config change
2024-09-02 03:55:09 -04:00
Richard Hansen
803621a9ee
Switch "magic constant" list of change detection vars to a var
2024-09-02 03:55:09 -04:00
Richard Hansen
268369a05e
Write update status to %recap, not %config
...
Status is not configuration so it doesn't belong in `%config`.
`wantip`, `wantipv4`, and `wantipv6` are still passed along in
`%config` because `group_hosts_by` needs access to them like other
settings.
2024-09-02 03:55:09 -04:00
Richard Hansen
0348ded46b
write_recap: Move update-specific %recap sync to update_nics
...
This is a step toward separating `%recap` from `%config`.
2024-09-01 20:10:42 -04:00
Richard Hansen
e478117d4e
write_recap: Move warned-min-* recap sync to where they are set
...
This is a step toward separating `%recap` from `%config`.
2024-09-01 20:10:26 -04:00
Richard Hansen
1a748e7a86
write_recap: Only update variables that could have changed
...
This is a step toward improving readability of `%config`/`%recap`
synchronization.
2024-09-01 20:10:09 -04:00
Richard Hansen
7660ca52bf
write_recap: Remove unnecessary recap existence check
2024-09-01 20:09:52 -04:00
Richard Hansen
2927f205ea
update_nics: Move non-config recap var reset to update call
...
for readability
2024-09-01 20:09:35 -04:00
Richard Hansen
974bba4d93
update_nics: Don't set wantip* if they're all undef
...
This helps keep `%config` "clean", which helps with testing and
debugging.
2024-09-01 20:09:18 -04:00
Richard Hansen
75552f80f7
nic_updateable: Don't mutate status-ipv* vars if not updating
...
This simplifies the logic a bit and improves readability.
2024-09-01 20:09:01 -04:00
Richard Hansen
25fac765a0
nic_updateable: Move clearing of update to write_recap
...
for readability (the logic that uses the `update` boolean should be
responsible for clearing it).
2024-09-01 20:08:44 -04:00
Richard Hansen
5256a1d02c
update_nics: Move legacy protocol support to an adapter function
2024-09-01 20:08:27 -04:00
Richard Hansen
a178d40633
update_nics: Combine post-update host loops
2024-09-01 20:08:10 -04:00
Richard Hansen
bf83ba032c
update_nics: Move legacy wantip assignment to update call
...
This consolidates the legacy support with other legacy support logic,
which will make it easier to refactor in a future commit.
2024-09-01 20:07:53 -04:00
Richard Hansen
c5df774b7e
update_nics: Change || next to or next (for readability)
2024-09-01 20:07:36 -04:00
Richard Hansen
20439bc130
update_nics: Refine comment
2024-09-01 20:07:19 -04:00
Richard Hansen
cb66870019
update_nics: Refine debug message for consistency/readability
2024-09-01 20:07:02 -04:00
Richard Hansen
78be40fe2c
update_nics: Remove unnecessary assertions
...
These just add cold code paths and impair readability and
maintainability.
2024-09-01 20:06:45 -04:00
Richard Hansen
499318fbe0
update_nics: Always overwrite status-ipv* with value from status
2024-09-01 20:06:28 -04:00
Richard Hansen
94ce6367ec
write_recap: Also clear out non-recap and stale values
...
Before, if a non-`undef` value was in `%recap` and the corresponding
value in `%config` became `undef`, the `%recap` value would remain
untouched. Now it is deleted to match `%config`.
Also, any `%recap` values without a corresponding recap variable
declaration are deleted.
2024-09-01 20:06:11 -04:00
Richard Hansen
c64e432bf1
write_recap: Update all status recap vars when writing recap
2024-09-01 20:05:54 -04:00
Richard Hansen
f2c9ef6641
read_recap: Scrub recap values without var declarations
2024-09-01 20:05:40 -04:00
Richard Hansen
70e2b51377
read_recap: Don't copy non-recap values to %config
2024-09-01 20:04:45 -04:00
Richard Hansen
8359eff6ea
read_recap: Check variable definedness, not existence
2024-09-01 20:03:13 -04:00
Richard Hansen
989f8be8c3
read_recap: Delete from %config any status values missing from recap
2024-09-01 20:02:58 -04:00
Richard Hansen
c9cdb96086
read_recap: Fix copying of recap values into %config
2024-09-01 20:02:34 -04:00
Richard Hansen
fbd7167b94
read_recap: Fix iteration over hosts
2024-09-01 18:08:10 -04:00
Richard Hansen
35cbc8d200
read_recap: Reference %recap directly (for readability)
...
There's no need to pass a reference to `%recap` as an argument when
that is the only way `read_recap` is ever used.
2024-09-01 18:08:10 -04:00
Richard Hansen
31740006d0
read_recap: Use a named loop variable (for readability)
2024-09-01 18:08:10 -04:00
Richard Hansen
65d2473213
read_recap: Don't load ip from recap
...
This should have been part of commit
de5d894c91 but I forgot.
2024-09-01 18:08:10 -04:00
Richard Hansen
ce1bcaa68b
nic_updateable: Set warned-min-* in %config, not %recap
...
Currently the semantics of recap variables are that values are updated
in `%config` and propagate to `%recap`. Before this commit,
`warned-min-interval` and `warned-min-error-interval` were set in
`%recap` instead of `%config`, meaning if they followed the semantics
they would be overwritten or deleted when synced with `%config`. Now
the values are set in `%config` to match the behavior of other recap
variables.
2024-09-01 18:08:10 -04:00
Richard Hansen
e8b3d9168b
Remove unnecessary variables from the recap
...
The logic does not use the persisted values so they do not need to be
persisted.
2024-09-01 18:08:10 -04:00
Richard Hansen
c943d7c0d9
tests: Add some unit tests for read_recap
2024-09-01 18:05:53 -04:00
Richard Hansen
0a9ee106e4
tests: Debug log when in protocol update callback
2024-09-01 02:44:05 -04:00
Richard Hansen
7181152c78
cloudflare: Delete unused variable declarations
2024-09-01 01:01:33 -04:00
Richard Hansen
4b5f28b2f0
Add/update TODO comments for problematic bits of code
2024-09-01 00:59:55 -04:00
Richard Hansen
cf54da50e4
read_recap: Invert condition (for readability)
2024-09-01 00:54:41 -04:00
Richard Hansen
c2db690efb
Whitespace fixes
2024-09-01 00:54:41 -04:00
Richard Hansen
3dafdbf604
Merge pull request #732 from rhansen/legacy-status
...
Fix handling of legacy `status` value
2024-08-22 04:20:37 -04:00
Richard Hansen
de5d894c91
Fix handling of legacy status value
...
When a legacy protocol implementation returns, move its `status` and
`ip` results to the new `status-ipv4` and `ipv4` (or `status-ipv6` and
`ipv6`) properties.
Also remove the now-unused `status` variable definition, and remove
`ip` from the recap.
2024-08-22 02:08:39 -04:00
Richard Hansen
4f89492dc0
nic_updateable: Use wantip definedness, not use enabledness
...
Rather than check whether `use`, `usev4`, or `usev6` is a non-disabled
value, check that `wantip`, `wantipv4`, or `wantipv6` is a defined
value. This is preparation for removing the `status` variable in a
future commit.
2024-08-22 02:08:39 -04:00
Richard Hansen
a21e215ada
Reduce unnecessary values in %config and %recap
...
* Delete values from `$config{$h}` and `$recap{$h}` when resetting
values (as opposed to setting a falsy value).
* Delete values from `$config{$h}` and `$recap{$h}` when they are no
longer needed.
This is mostly done to improve the tests in `t/update_nics.pl`.
2024-08-22 02:08:39 -04:00
Richard Hansen
acd8dfe47f
Don't force use to disabled if usev4 or usev6 is enabled
...
Now that the default changes depending on `usev4` and `usev6`, this is
no longer necessary. Removing it simplifies the code a bit and makes
the behavior of unit tests match the overall behavior a bit better.
2024-08-22 02:08:39 -04:00
Richard Hansen
f024bcce34
Dynamically compute default for use based on usev4, usev6
...
This is mostly to simplify tests, but it also improves readability.
The infrastructure changes in this commit also make it possible to
introduce a new `url` variable that defaults to `opt('server', $h)`
concatenated with `opt('script', $h)` so that we can start migrating
away from those user-unfriendly variables.
2024-08-22 02:08:39 -04:00