fixed some issues in socket address conversion

This commit is contained in:
2018-03-25 03:05:12 +00:00
parent 598f4f0457
commit 5c297d784a
48 changed files with 121 additions and 151 deletions

View File

@ -390,6 +390,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@

View File

@ -546,6 +546,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@

View File

@ -443,6 +443,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@

View File

@ -377,6 +377,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@

View File

@ -376,6 +376,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@

View File

@ -384,6 +384,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@

View File

@ -377,6 +377,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@

View File

@ -408,6 +408,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@

View File

@ -423,6 +423,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@

View File

@ -83,36 +83,24 @@
union sockaddr_t
{
#if defined(AF_INET) || defined(AF_INET6) || defined(AF_UNIX)
#if defined(AF_INET)
struct sockaddr sa;
#if (QSE_SIZEOF_STRUCT_SOCKADDR_IN > 0)
struct sockaddr_in in4;
#endif
#if defined(AF_INET6)
#endif
#if (QSE_SIZEOF_STRUCT_SOCKADDR_IN6 > 0)
struct sockaddr_in6 in6;
#endif
#if defined(AF_UNIX)
#endif
#if (QSE_SIZEOF_STRUCT_SOCKADDR_UN > 0)
struct sockaddr_un un;
#endif
#else
int dummy;
#endif
#if (QSE_SIZEOF_STRUCT_SOCKADDR_LL > 0)
struct sockaddr_ll ll;
#endif
};
typedef union sockaddr_t sockaddr_t;
/*
#if defined(AF_INET)
# define FAMILY(x) (((struct sockaddr_in*)(x))->sin_family)
#elif defined(AF_INET6)
# define FAMILY(x) (((struct sockaddr_in6*)(x))->sin6_family)
#elif defined(AF_UNIX)
# define FAMILY(x) (((struct sockaddr_un*)(x))->sun_family)
#else
# define FAMILY(x) (-1)
#endif
*/
#define FAMILY(x) (((qse_skad_t*)x)->u.sa.family)
#define FAMILY(x) (((struct sockaddr*)(x))->sa_family)
static QSE_INLINE int skad_to_nwad (const sockaddr_t* skad, qse_nwad_t* nwad)
{
@ -120,7 +108,7 @@ static QSE_INLINE int skad_to_nwad (const sockaddr_t* skad, qse_nwad_t* nwad)
switch (FAMILY(skad))
{
#if defined(AF_INET)
#if defined(AF_INET)
case AF_INET:
{
struct sockaddr_in* in;
@ -133,9 +121,9 @@ static QSE_INLINE int skad_to_nwad (const sockaddr_t* skad, qse_nwad_t* nwad)
nwad->u.in4.port = in->sin_port;
break;
}
#endif
#endif
#if defined(AF_INET6)
#if defined(AF_INET6)
case AF_INET6:
{
struct sockaddr_in6* in;
@ -151,9 +139,9 @@ static QSE_INLINE int skad_to_nwad (const sockaddr_t* skad, qse_nwad_t* nwad)
nwad->u.in6.port = in->sin6_port;
break;
}
#endif
#endif
#if defined(AF_UNIX)
#if defined(AF_UNIX)
case AF_UNIX:
{
struct sockaddr_un* un;
@ -167,14 +155,14 @@ static QSE_INLINE int skad_to_nwad (const sockaddr_t* skad, qse_nwad_t* nwad)
#else
{
qse_size_t wcslen, mbslen;
mbslen = QSE_COUNTOF(nwad->u.local.path);
qse_wcstombs (un->sun_path, &wcslen, nwad->u.local.path, &mbslen);
wcslen = QSE_COUNTOF(nwad->u.local.path);
qse_mbstowcs (un->sun_path, &mbslen, nwad->u.local.path, &wcslen);
/* don't care about conversion errors */
}
#endif
break;
}
#endif
#endif
default:
break;
}
@ -190,7 +178,7 @@ static QSE_INLINE int nwad_to_skad (const qse_nwad_t* nwad, sockaddr_t* skad)
{
case QSE_NWAD_IN4:
{
#if defined(AF_INET)
#if defined(AF_INET)
struct sockaddr_in* in;
in = (struct sockaddr_in*)skad;
@ -200,13 +188,13 @@ static QSE_INLINE int nwad_to_skad (const qse_nwad_t* nwad, sockaddr_t* skad)
in->sin_family = AF_INET;
in->sin_addr.s_addr = nwad->u.in4.addr.value;
in->sin_port = nwad->u.in4.port;
#endif
#endif
break;
}
case QSE_NWAD_IN6:
{
#if defined(AF_INET6)
#if defined(AF_INET6)
struct sockaddr_in6* in;
in = (struct sockaddr_in6*)skad;
@ -219,14 +207,14 @@ static QSE_INLINE int nwad_to_skad (const qse_nwad_t* nwad, sockaddr_t* skad)
in->sin6_scope_id = nwad->u.in6.scope;
#endif
in->sin6_port = nwad->u.in6.port;
#endif
#endif
break;
}
case QSE_NWAD_LOCAL:
{
#if defined(AF_UNIX)
#if defined(AF_UNIX)
struct sockaddr_un* un;
un = (struct sockaddr_un*)skad;
@ -245,7 +233,7 @@ static QSE_INLINE int nwad_to_skad (const qse_nwad_t* nwad, sockaddr_t* skad)
}
#endif
#endif
#endif
break;
}
@ -274,39 +262,27 @@ int qse_skadfamily (const qse_skad_t* skad)
int qse_skadsize (const qse_skad_t* skad)
{
sockaddr_t* sa = (sockaddr_t*)skad;
QSE_ASSERT (QSE_SIZEOF(*skad) >= QSE_SIZEOF(*sa));
switch (FAMILY(skad))
{
#if defined(AF_INET)
case AF_INET:
{
struct sockaddr_in in;
return QSE_SIZEOF(in);
}
case AF_INET: return QSE_SIZEOF(sa->in4);
#endif
#if defined(AF_INET6)
case AF_INET6:
{
struct sockaddr_in6 in6;
return QSE_SIZEOF(in6);
}
#endif
#if defined(AF_PACKET)
case AF_PACKET:
{
struct sockaddr_ll ll;
return QSE_SIZEOF(ll);
}
case AF_INET6: return QSE_SIZEOF(sa->in6);
#endif
#if defined(AF_UNIX)
case AF_UNIX:
{
struct sockaddr_un un;
return QSE_SIZEOF(un);
}
case AF_UNIX: return QSE_SIZEOF(sa->un);
#endif
#if defined(AF_PACKET)
case AF_PACKET: return QSE_SIZEOF(sa->ll);
#endif
}
return 0;

View File

@ -377,6 +377,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@