You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tailscale/ipn
M. J. Fromberger 9385dfe7f6
ipn/ipnlocal/netmapcache: add a package to split and cache network maps (#18497)
This commit is based on part of #17925, reworked as a separate package.

Add a package that can store and load netmap.NetworkMap values in persistent
storage, using a basic columnar representation. This commit includes a default
storage interface based on plain files, but the interface can be implemented
with more structured storage if we want to later.

The tests are set up to require that all the fields of the NetworkMap are
handled, except those explicitly designated as not-cached, and check that a
fully-populated value can round-trip correctly through the cache.  Adding or
removing fields, either in the NetworkMap or in the cached representation, will
trigger either build failures (e.g., for type mismatch) or test failures (e.g.,
for representation changes or missing fields). This isn't quite as nice as
automatically updating the representation, which I also prototyped, but is much
simpler to maintain and less code.

This commit does not yet hook up the cache to the backend, that will be a
subsequent change.

Updates #12639

Change-Id: Icb48639e1d61f2aec59904ecd172c73e05ba7bf9
Signed-off-by: M. J. Fromberger <fromberger@tailscale.com>
3 days ago
..
auditlog all: remove AUTHORS file and references to it 6 days ago
conffile all: remove AUTHORS file and references to it 6 days ago
desktop all: remove AUTHORS file and references to it 6 days ago
ipnauth all: remove AUTHORS file and references to it 6 days ago
ipnext all: remove AUTHORS file and references to it 6 days ago
ipnlocal ipn/ipnlocal/netmapcache: add a package to split and cache network maps (#18497) 3 days ago
ipnserver all: remove AUTHORS file and references to it 6 days ago
ipnstate all: remove AUTHORS file and references to it 6 days ago
lapitest all: remove AUTHORS file and references to it 6 days ago
localapi all: remove AUTHORS file and references to it 6 days ago
policy all: remove AUTHORS file and references to it 6 days ago
store all: remove AUTHORS file and references to it 6 days ago
backend.go all: remove AUTHORS file and references to it 6 days ago
backend_test.go all: remove AUTHORS file and references to it 6 days ago
conf.go all: remove AUTHORS file and references to it 6 days ago
doc.go all: remove AUTHORS file and references to it 6 days ago
ipn_clone.go all: remove AUTHORS file and references to it 6 days ago
ipn_test.go all: remove AUTHORS file and references to it 6 days ago
ipn_view.go all: remove AUTHORS file and references to it 6 days ago
prefs.go all: remove AUTHORS file and references to it 6 days ago
prefs_test.go all: remove AUTHORS file and references to it 6 days ago
serve.go all: remove AUTHORS file and references to it 6 days ago
serve_expand_test.go all: remove AUTHORS file and references to it 6 days ago
serve_test.go all: remove AUTHORS file and references to it 6 days ago
store.go all: remove AUTHORS file and references to it 6 days ago
store_test.go all: remove AUTHORS file and references to it 6 days ago