Declare a new address type like this:
typedef struct _SOCKADDR_IPv4v6
{
union
{
sockaddr_in addrv4;
sockaddr_in6 addrv6;
};
} SOCKADDR_IPv4v6, *PSOCKADDR_IPv4v6;
SOCKADDR_IPv4v6 addr;
Icmp6SendEcho2( ..., &addr.addrv6, ... ); // if addr is IPv6
IcmpSendEcho2( ..., addr.addrv4.sin_addr, ... ); // if addr is IPv4
Don't try it, just do it! ;-)