diff options
Diffstat (limited to 'lib/sockunion.c')
-rw-r--r-- | lib/sockunion.c | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/lib/sockunion.c b/lib/sockunion.c index 8fbe3450..3052063f 100644 --- a/lib/sockunion.c +++ b/lib/sockunion.c @@ -225,6 +225,8 @@ sockunion_su2str (union sockunion *su) #endif /* HAVE_IPV6 */ } return XSTRDUP (MTYPE_TMP, str); +<<<<<<< HEAD:lib/sockunion.c +======= } /* Convert IPv4 compatible IPv6 address to IPv4 address. */ @@ -243,6 +245,7 @@ sockunion_normalise_mapped (union sockunion *su) memcpy (su, &sin, sizeof (struct sockaddr_in)); } #endif /* HAVE_IPV6 */ +>>>>>>> 41dc3488cf127a1e23333459a0c316ded67f7ff3:lib/sockunion.c } /* Return socket of sockunion. */ @@ -271,6 +274,26 @@ sockunion_accept (int sock, union sockunion *su) len = sizeof (union sockunion); client_sock = accept (sock, (struct sockaddr *) su, &len); +<<<<<<< HEAD:lib/sockunion.c + /* Convert IPv4 compatible IPv6 address to IPv4 address. */ +#if 0 +#ifdef HAVE_IPV6 + if (su->sa.sa_family == AF_INET6) + { + if (IN6_IS_ADDR_V4MAPPED (&su->sin6.sin6_addr)) + { + struct sockaddr_in sin; + + memset (&sin, 0, sizeof (struct sockaddr_in)); + sin.sin_family = AF_INET; + memcpy (&sin.sin_addr, ((char *)&su->sin6.sin6_addr) + 12, 4); + memcpy (su, &sin, sizeof (struct sockaddr_in)); + } + } +#endif /* HAVE_IPV6 */ +#endif +======= +>>>>>>> 41dc3488cf127a1e23333459a0c316ded67f7ff3:lib/sockunion.c return client_sock; } @@ -593,7 +616,22 @@ sockunion_getsockname (int fd) { su = XCALLOC (MTYPE_SOCKUNION, sizeof (union sockunion)); memcpy (su, &name, sizeof (struct sockaddr_in6)); +<<<<<<< HEAD:lib/sockunion.c + +#if 0 + if (IN6_IS_ADDR_V4MAPPED (&su->sin6.sin6_addr)) + { + struct sockaddr_in sin; + + sin.sin_family = AF_INET; + memcpy (&sin.sin_addr, ((char *)&su->sin6.sin6_addr) + 12, 4); + sin.sin_port = su->sin6.sin6_port; + memcpy (su, &sin, sizeof (struct sockaddr_in)); + } +#endif +======= sockunion_normalise_mapped (su); +>>>>>>> 41dc3488cf127a1e23333459a0c316ded67f7ff3:lib/sockunion.c return su; } #endif /* HAVE_IPV6 */ @@ -638,7 +676,21 @@ sockunion_getpeername (int fd) { su = XCALLOC (MTYPE_SOCKUNION, sizeof (union sockunion)); memcpy (su, &name, sizeof (struct sockaddr_in6)); +<<<<<<< HEAD:lib/sockunion.c +#if 0 + if (IN6_IS_ADDR_V4MAPPED (&su->sin6.sin6_addr)) + { + struct sockaddr_in sin; + + sin.sin_family = AF_INET; + memcpy (&sin.sin_addr, ((char *)&su->sin6.sin6_addr) + 12, 4); + sin.sin_port = su->sin6.sin6_port; + memcpy (su, &sin, sizeof (struct sockaddr_in)); + } +#endif +======= sockunion_normalise_mapped (su); +>>>>>>> 41dc3488cf127a1e23333459a0c316ded67f7ff3:lib/sockunion.c return su; } #endif /* HAVE_IPV6 */ |