summaryrefslogtreecommitdiff
path: root/arper.py
diff options
context:
space:
mode:
Diffstat (limited to 'arper.py')
-rw-r--r--arper.py19
1 files changed, 15 insertions, 4 deletions
diff --git a/arper.py b/arper.py
index a665137..2ef2676 100644
--- a/arper.py
+++ b/arper.py
@@ -55,6 +55,17 @@ cfg.add_argument(
@persistent.persistent_autoloaded_singleton() # type: ignore
class Arper(persistent.Persistent):
+ """A caching layer around the kernel's network mapping between IPs and
+ MACs. This class restores persisted state that expires
+ periodically (see --arper_cache_max_staleness) at program startup
+ time. If it's unable to use the file's contents, it queries the
+ kernel (via arp) and uses an auxillary utility called arp-scan to
+ query the network. If it has to do this there's a latency hit but
+ it persists the collected data in the cache file. Either way, the
+ class behaves as a global singleton hosting this data thereafter.
+
+ """
+
def __init__(
self,
cached_local_state: Optional[BiDict] = None,
@@ -118,10 +129,10 @@ class Arper(persistent.Persistent):
@classmethod
def load_state(
- cls,
- cache_file: str,
- freshness_threshold_sec: int,
- state: BiDict,
+ cls,
+ cache_file: str,
+ freshness_threshold_sec: int,
+ state: BiDict,
):
if not file_utils.file_is_readable(cache_file):
logger.debug('Can\'t read %s', cache_file)