This diff uses applymask() instead of the IPv4 and IPv6 version. Makes the code a tiny bit simpler.
-- :wq Claudio Index: parser.c =================================================================== RCS file: /cvs/src/usr.sbin/bgpctl/parser.c,v retrieving revision 1.111 diff -u -p -r1.111 parser.c --- parser.c 16 Jun 2022 15:34:07 -0000 1.111 +++ parser.c 16 Jun 2022 16:51:38 -0000 @@ -968,17 +968,16 @@ parse_prefix(const char *word, size_t wo mask = 32; if (mask > 32) errx(1, "invalid netmask: too large"); - inet4applymask(&addr->v4, &addr->v4, mask); break; case AID_INET6: if (mask == -1) mask = 128; - inet6applymask(&addr->v6, &addr->v6, mask); break; default: return (0); } + applymask(&addr, &addr, mask); *prefixlen = mask; return (1); }