This is the mail archive of the libc-alpha@sources.redhat.com mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

glibc needs an ipv6 update for Linux 2.4


Hi!

glibc currently defines struct sockaddr_in6 (in <netinet/in.h>) as
follows:

struct sockaddr_in6
  {
    __SOCKADDR_COMMON (sin6_);
    uint16_t sin6_port;         /* Transport layer port # */
    uint32_t sin6_flowinfo;     /* IPv6 flow information */
    struct in6_addr sin6_addr;  /* IPv6 address */
  };

This was correct once, but the IPv6 guys decided to add another field called
"scope ID" (see <linux/in6.h>, the kernel includes were already fixed).

This structure should now look like this:

struct sockaddr_in6
  {
    __SOCKADDR_COMMON (sin6_);
    uint16_t sin6_port;         /* Transport layer port # */
    uint32_t sin6_flowinfo;     /* IPv6 flow information */
    struct in6_addr sin6_addr;  /* IPv6 address */
    uint32_t sin6_scope_id;     /* IPv6 scope id (new in RFC2553) */
  };

The change should be source-code transparent to well-written programs
that memset the struct sockaddr before using it, and it is binary
compatible to old programs, because the socket routines that take
sockaddr_in6 as argument always also take the length as argument.

Felix

PS: Will you add me to the changelog now? ;-)

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]