I'm looking at some traces where a TTL exceeded in transit ICMP message with ipsrc as mcast is captured. The ICMP message is referencing the original ip header with a correct structure [ipsrc ucast, ipdst mcast, TTL=1]. My only assumption is that the original L3 box is doing a TTL into L3 lookup on a ucast ipsrc address to which it does not provide a gateway - thus when generating the TTL exceeded message (TTL=1) it reverses the ipsrc/ipdst.
Have you ever encountered an ipsrc/ipdst rewrite like this?