After further troubleshooting, I discovered that, for some reason, the file /var/etc/frr/frr.conf is missing the line "ip ospf area 0.0.0.0" on every interface.
However, whenever I restart the FRR services, the file is rewritten and the "ip ospf area 0.0.0.0" line is correctly added to every interface.
I’m not sure if this is the root cause of the problem or just a symptom. The fact is, when I reboot my HA PFSense box, /var/etc/frr/frr.conf is missing the "ip ospf area 0.0.0.0" statements, and only after restarting the FRR service does the file get updated.
In practical terms, I observe that no OSPF hello packets are sent until this is fixed—that is, until the services are restarted.
EDIT:
/usr/local/pkg/frr/inc/frr_ospf.inc
line 215, remove:
if (empty($interface_ip)) {
continue;
}
This fixes the problem.