My previous understanding was that RFC 3927 did not allow transmitting datagrams involving the 169.254.0.0/16 link-local prefix; now that I've looked over the RFC more closely, I'm not sure that is the case.
I have cc'ed Bruce Simpson on this message in hopes that he can shed some light on this. I believe he committed the change that disallowed transmitting from 169.254.0.0/16 addresses.
RFC 3927 is pretty clear that 169.254.0.0/16 traffic is not to be
forwarded beyond the link.
I do not understand why the OP is losing traffic, unless he's relying on
pre-RFC 3927 behaviour in his network topology.
The IN_LINKLOCAL() check happens after ip_input() walks the address hash
looking for exact address matches. So if an interface has a link-local
address, the packet should get delivered upstack as usual.
When I made this change, link-local addressing couldn't be fully
implemented in FreeBSD, due to the lack of support for address scopes in
the FreeBSD IPv4 code.
Hopefully new people can pick up on it as they wish.