Boost logo

Boost :

From: Gaurav.Jain_at_[hidden]
Date: 2007-02-13 01:58:32


Hi Chris,

Christopher Kohlhoff <chris <at> kohlhoff.com> writes:
> Hi Gaurav,
> Is this using 0.3.7? The line number corresponds to a comment in the
> latest version of the code.
 
  Version of daytime_client.cpp is indeed 0.3.8.

>
> > "/1_33_1/include/boost/asio/ip/basic_endpoint.hpp", line 173.14:
> > 1540-0217 (S)
> > "ss_family" is not a member of "struct sockaddr_storage".
>
> Have a look in the system header file sys/socket.h (which is where
> sockaddr_storage should be defined) and see if there is a #define that

> determines what members sockaddr_storage contains.
>
> Cheers,
> Chris

 Quite strange that struct sockaddr_storage doesn't have any member
"ss_family", instead address family is represented by "__ss_family".

------------------------------------------------------------------------
-
#if defined(COMPAT_43) && !defined(_KERNEL)

#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof(ushort_t)) #define
_SS_PAD2SIZE (_SS_MAXSIZE - (sizeof(ushort_t) + \
                                        _SS_PAD1SIZE + _SS_ALIGNSIZE))

struct sockaddr_storage {
        ushort_t __ss_family; /* address family */
        char __ss_pad1[_SS_PAD1SIZE]; /* pad up to alignment
field */
#if defined(__64BIT__) || (defined(_ALL_SOURCE) && defined(_LONG_LONG))
        int64_t __ss_align; /* field to force desired
structure */
                                        /* storage alignment */ #else
        int __ss_align[2];
#endif
        char __ss_pad2[_SS_PAD2SIZE];
                                /* pad to achieve desired size */ };
#else

#define _SS_PAD1SIZE (_SS_ALIGNSIZE - (sizeof(uchar_t) +
sizeof(sa_family_t))) #define _SS_PAD2SIZE (_SS_MAXSIZE -
(sizeof(sa_family_t) + \
                                        _SS_PAD1SIZE + _SS_ALIGNSIZE))

struct sockaddr_storage {
        uchar_t __ss_len; /* address length */
        sa_family_t __ss_family; /* address family */
        char __ss_pad1[_SS_PAD1SIZE]; /* pad up to alignment
field */
#if defined(__64BIT__) || (defined(_ALL_SOURCE) && defined(_LONG_LONG))
        int64_t __ss_align; /* field to force desired
structure */
                                        /* storage alignment */ #else
        int __ss_align[2];
#endif
        char __ss_pad2[_SS_PAD2SIZE];
                                /* pad to achieve desired size */ };
#endif /* COMPAT_43 */
------------------------------------------------------------------------
-----
 socket applications can be compiled with COMPAT_43 defined. This will
make the sockaddr structure BSD 4.3 compatible.

Regards,
Gaurav


Boost list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk