2
0

Compare commits

..

No commits in common. "eef2517480eba331789021e8ad0fdc668707403b" and "7082eeeda72fced975c974bc2381e4efff540616" have entirely different histories.

4 changed files with 14 additions and 22 deletions

10
fmt.sh
View File

@ -3,11 +3,5 @@
self=$(dirname "$(readlink -f "$0")") self=$(dirname "$(readlink -f "$0")")
cd "${self}" cd "${self}"
if [ -d venv ]; then python3 -m black src
python=venv/bin/python3 python3 -m isort src
else
python=python3
fi
"${python}" -m black src
"${python}" -m isort src

View File

@ -142,9 +142,9 @@ class Database:
self._macs: dict[cptypes.MacAddress, MacEntry] = {} self._macs: dict[cptypes.MacAddress, MacEntry] = {}
self._state_filename = state_filename self._state_filename = state_filename
self._changed_since_last_cleanup = False self._changed_since_last_cleanup = False
self._send_changes: ( self._send_changes: trio.MemorySendChannel[
trio.MemorySendChannel[capport.comm.message.MacStates | list[capport.comm.message.MacStates],] | None capport.comm.message.MacStates | list[capport.comm.message.MacStates],
) = None ] | None = None
@contextlib.asynccontextmanager @contextlib.asynccontextmanager
async def make_changes(self) -> typing.AsyncGenerator[PendingUpdates, None]: async def make_changes(self) -> typing.AsyncGenerator[PendingUpdates, None]:

View File

@ -17,7 +17,7 @@ from . import cptypes
class MetricPrinter: class MetricPrinter:
args: CliArguments args: CliArguments
now: int | None = None now: int | None = None
_known_names: set[str] = dataclasses.field(default_factory=set, init=False) _known_names: set[str] = dataclasses.field(default_factory=set, init=None)
_now_str: str = dataclasses.field(init=False) _now_str: str = dataclasses.field(init=False)
_label_str: str = dataclasses.field(init=False) _label_str: str = dataclasses.field(init=False)
@ -28,8 +28,8 @@ class MetricPrinter:
self._now_str = "" self._now_str = ""
labels = [] labels = []
if self.args.instance: if self.args.instance:
labels.append(f'captive_instance="{self.args.instance}"') labels.append(f"captive_instance=\"{self.args.instance}\"")
labels.append(f'interface="{self.args.interface}"') labels.append(f"interface=\"{self.args.interface}\"")
self._label_str = "{" + ",".join(labels) + "}" self._label_str = "{" + ",".join(labels) + "}"
def print_metric(self, *, name: str, mtype: str, value: typing.Any, help: str | None = None): def print_metric(self, *, name: str, mtype: str, value: typing.Any, help: str | None = None):
@ -56,7 +56,7 @@ async def amain(args: CliArguments):
unique_ipv6 = set() unique_ipv6 = set()
async with capport.utils.ipneigh.connect() as ipn: async with capport.utils.ipneigh.connect() as ipn:
ipn.ip.strict_check = True ipn.ip.strict_check = True
async for mac, addr in ipn.dump_neighbors(args.interface): async for (mac, addr) in ipn.dump_neighbors(args.interface):
if mac in captive_allowed_entries: if mac in captive_allowed_entries:
seen_allowed_entries.add(mac) seen_allowed_entries.add(mac)
unique_clients.add(mac) unique_clients.add(mac)
@ -101,13 +101,13 @@ async def amain(args: CliArguments):
total_ipv6, total_ipv6,
help="Number of IPv6 addresses seen in neighbor cache", help="Number of IPv6 addresses seen in neighbor cache",
) )
with open("/proc/sys/net/netfilter/nf_conntrack_count") as f: with open('/proc/sys/net/netfilter/nf_conntrack_count') as f:
printer.print_gauge( printer.print_gauge(
"nf_conntrack_count", "nf_conntrack_count",
int(f.readline()), int(f.readline()),
help="Conntrack count", help="Conntrack count",
) )
with open("/proc/sys/net/netfilter/nf_conntrack_max") as f: with open('/proc/sys/net/netfilter/nf_conntrack_max') as f:
printer.print_gauge( printer.print_gauge(
"nf_conntrack_max", "nf_conntrack_max",
int(f.readline()), int(f.readline()),

View File

@ -67,11 +67,9 @@ def _build(msg_class: type[_NlMsgBase], /, attrs: dict = {}, header: dict = {},
# support passing nested attributes as dicts of subattributes (or lists of those) # support passing nested attributes as dicts of subattributes (or lists of those)
if prime["nla_array"]: if prime["nla_array"]:
value = [ value = [
(
_build(nla_class, attrs=elem) _build(nla_class, attrs=elem)
if not isinstance(elem, pyroute2.netlink.nlmsg_base) and isinstance(elem, dict) if not isinstance(elem, pyroute2.netlink.nlmsg_base) and isinstance(elem, dict)
else elem else elem
)
for elem in value for elem in value
] ]
elif not isinstance(value, pyroute2.netlink.nlmsg_base) and isinstance(value, dict): elif not isinstance(value, pyroute2.netlink.nlmsg_base) and isinstance(value, dict):