A record of my public open-source contributions — pull requests, direct commits, own projects, mailing-list patches, security advisory credits, and IETF standards work — gathered from GitHub, GitLab, project AUTHORS files, OpenStack security advisories, and the IETF Datatracker. It spans 2006 to 2026, is sourced from public records only, and is not necessarily exhaustive.

78 entries so far: 60 pull/merge requests and Gerrit changes, 5 direct commits, 6 IETF RFCs, 4 own projects, and 2 CVEs credited, across 34 third-party projects.

Date Project Contribution Language
2006-01-07 Linux kernel kbuild: ensure mrproper removes .old_version — merged by Sam Ravnborg Makefile
2006-01-11 Linux kernel ext3: fix documentation of online resizing (undocument non-working resize= option) — merged by Linus Torvalds Documentation
c. 2007 (Openbox 3.4.0) Openbox Directional focus, edge moving/growing window actions (DirectionalFocus, MoveToEdge, GrowToEdge) — shipped in Openbox 3.4.0 (2007-08-06). Predates the project’s move to git; original mailing-list submission not independently linkable. C
2011-08-28 Linux kernel ipv6: send ICMPv6 Router Solicitations only when accept_ra allows accepting Router Advertisements — merged by David S. Miller C
2014-03-10 clatd 464XLAT CLAT implementation for Linux (own project) Perl
2014-04-15 rancid-git Merge handling of rancid-fe from upstream branch — merged Perl
2014-04-22 rancid-git Add ucsrancid for Cisco UCS devices — merged Perl
2014-04-30 keepalived Revert “Honor preempt_delay setting on startup” — merged C
2014-07-09 rpki-validator rpki-validator.sh: add a run in foreground mode — merged Shell
2014-07-29 keepalived vrrp: fix preempt and state BACKUP when prio 255 — merged C
2014-07-31 bgpq3 Avoid producing empty Juniper route-filter sets — not merged C
2014-08-11 rpki-validator Bugfix: ensure “start” actually daemonises — merged Shell
2014-08-23 ipv6-deprecate-atomfrag “Some updates” to the draft text — merged IETF Draft
2014-08-24 ipv6-deprecate-atomfrag As requested in e-mail discussion — merged IETF Draft
2014-11-26 netconf-perl Rewrite Net::Netconf::Access::ssh using Net::SSH2 — merged Perl
2014-12-03 ipv6-deprecate-atomfrag Note that protocols built on SIIT are impacted — merged IETF Draft
2015-01-08 Jool Fix test of EAM 192.0.2.128/26 ↔ 2001:db8:dddd::/64 — merged C
2015-03-06 Jool Debug log level for drops due to UDP w/ checksum 0 — merged C
2015-03-08 Jool Use /96 translation prefix instead of /64 — merged C
2015-04-13 NIPAP Make init script “status” action LSB compliant — merged Shell
2015-04-17 mobile-broadband-provider-info no: New default APN for Telenor Norway — merged XML
2015-04-22 NIPAP Fix confirmation message when editing prefixes — merged JavaScript
2015-08-08 Jool Add support for the DKMS framework — merged Shell
2015-10-19 libvmod-rfc6052 Varnish Cache vmod for RFC6052 IPv4-embedded IPv6 addresses (own project) C
2015-11-27 keepalived vrrp: set router flag in neighbour advertisements — merged C
2015-12-07 netconf-perl Correct usage of Net::SSH2->error() — open Perl
2016-02 RFC 7755 SIIT-DC: Stateless IP/ICMP Translation for IPv6 Data Centers IETF RFC
2016-02 RFC 7756 SIIT-DC: Dual Translation Mode IETF RFC
2016-02 RFC 7757 Explicit Address Mappings for Stateless IP/ICMP Translation IETF RFC
2016-04-10 openwrt routing hnetd: support the ip4mode parameter — merged C
2016-04-10 openwrt routing hnetd: ensure ULA prefix persists across reboots — not merged C
2016-06 RFC 7915 IP/ICMP Translation Algorithm IETF RFC
2017-01 RFC 8021 Generation of IPv6 Atomic Fragments Considered Harmful IETF RFC
2017-03-17 bgp-session-culling Rewrite Section 1 (Introduction) — merged IETF Draft
2017-07-01 Linux kernel net: cdc_mbim: apply “NDP to end” quirk to HP lt4132 modem — merged by David S. Miller C
2017-08 RFC 8215 Local-Use IPv4/IPv6 Translation Prefix IETF RFC
2017-10-22 lede-project source Make network.*.ip6assign default to 64 — not merged OpenWrt UCI
2018-10-04 FRRouting doc: correct route map match for prefix lists — merged Documentation
2018-11-17 NLNOG ring-ansible Install Paris Traceroute — merged YAML/Ansible
2018-11-18 ipxe [efi] Enable NET_PROTO_IPV6 by default — not merged C
2018-12-08 Linux kernel USB: serial: option: add HP lt4132 modem — merged by Johan Hovold C
2018-12-17 systemd resolve: enable EDNS0 towards the 127.0.0.53 stub resolver — merged C
2019-05-04 NLNOG ring-ansible etcfiles/hosts.j2: fix ordering of fqdn/alias in /etc/hosts — merged YAML/Ansible
2019-05-04 NLNOG ring-ansible ring-ping: only use nodes with working dual-stack connectivity — merged YAML/Ansible
2019-05-16 openshift-netbox netbox-base.yml: use GIT_REMOTE instead of GIT_REPO — not merged YAML
2019-05-24 openshift-netbox Use a static database username (“netbox”) by default — merged OpenShift Template
2019-05-24 openshift-netbox Add database backup/restore instructions to README — merged Markdown
2019-05-24 openshift-netbox Add media backup/restore instructions to README — merged Markdown
2019-07-18 openshift-netbox WIP: update to NetBox v2.5.13 — not merged OpenShift Template
2019-07-30 nextcloud-snap mysql: only write root password to root.ini if successfully set — merged Shell
2019-07-31 nextcloud-snap mysql: explicitly configure error log file name — merged Shell
2019-08-17 dnssec-trigger Enable EDNS0 in generated /etc/resolv.conf — not merged C
2020-04-13 3gpptest IPv6 testing tool for mobile networks while roaming (own project) Python
2020-06-07 liquidprompt load: do not infer CPU utilisation from load average — not merged Shell
2020-07-22 FRRouting tools: do not silently ignore config load errors at startup — merged C
2020-09-26 pop-os shell rebuild.sh: offer to install TypeScript via npm if missing — merged Shell
2020-10-02 pop-os shell rebuild.sh: offer to install TypeScript via npm if needed — not merged Shell
2021-02-12 podman (southalc) Remove creation of pointless temp file — merged Puppet
2022-06-02 sonic-buildimage [Accton] fix inconsistent tabs/spaces in fanutil.py — open Python
2022-11-16 firezone Allow pgcrypto extension to preexist — merged Elixir
2022-11-17 firezone Allow btree_gist extension to preexist — merged Elixir
2023-03-06 sonic-builds Only deploy builds.json if it is non-empty — merged Shell
2023-03-09 sonic-buildimage frrcfgd: fix incorrect rendering of route-map references — open Python
2024-12-03 OpenStack Neutron OSSA-2024-005 / CVE-2024-53916: authorization bypass let unprivileged tenants add or clear tags on Neutron networks they don’t own — discovered and credited as sole reporter (CVE discovery) Python
2024-12-06 evpn_agent OpenStack EVPN Agent (own project) Python
2026-05-13 rclone jottacloud: support whitelabel service Phonero Sky — merged Go
2026-07-10 OpenStack Designate Fix catalog zone AXFR lookup for non-default pools — open Python
2026-07-10 OpenStack Designate Fix pool delete when it contains a catalog zone — open Python
2026-07-10 OpenStack Designate Fix catalog zone TSIG key name to not include a trailing dot — open Python
2026-07-21 OpenStack Puppet-Designate Add remaining default SOA parameters — open Puppet
2026-07-25 nwipe create_pdf: use smartctl -x instead of -a — merged C
2026-07-27 Knot DNS remote: bind outgoing connections to a device via ‘via’ address, plus keying the TCP connection pool and unreachable-remote cache on the outgoing device too, with tests — reported as issue #977, authored on a fork; merged by maintainer Daniel Salzman in MR !1898 (2026-08-04), shipped in Knot DNS 3.5.7 C
2026-08-11 OpenStack Designate OSSA-2026-034 / CVE-2026-71193, CVE-2026-71194: cross-tenant DNS zone overlap and mDNS denial-of-service via pool scheduling — co-discovered with Omer Schwartz (Red Hat) (CVE discovery) Python
2026-09-08 OpenStack Designate Fix pool nameserver update when pool has a catalog zone — merged Python
2026-09-08 OpenStack Designate Fix pool_move_zone not bumping catalog zone serials — merged Python
2026-09-08 OpenStack Designate Use lowest priority ns_record as SOA MNAME — merged Python
2026-09-11 Knot DNS policy: opportunistically reuse trashed DNSSEC keys for recreated zones — open C
2026-09-12 betterleaks report: never print a raw secret when its exact location can’t be verified — open Go