[Date Prev][Date Next] [Chronological] [Thread] [Top]

RE: CLDAP with IPv6: address storage



If the platform has INET6 support we can use sockaddr_storage instead. I
don't think breaking compatibility is a serious issue since CLDAP support is
only experimental.

  -- Howard Chu
  Chief Architect, Symas Corp.       Director, Highland Sun
  http://www.symas.com               http://highlandsun.com/hyc
  Symas: Premier OpenSource Development and Support

> -----Original Message-----
> From: owner-openldap-devel@OpenLDAP.org
> [mailto:owner-openldap-devel@OpenLDAP.org]On Behalf Of Thorild Selen
> Sent: Tuesday, February 04, 2003 6:05 AM
> To: openldap-devel@OpenLDAP.org
> Subject: CLDAP with IPv6: address storage
>
>
> Greetings,
>
> Concerning storage of IPv6 addresses (that won't fit in a struct
> sockaddr):
>
> I mentioned in my followup 3 to ITS#2018 that the same problem seems
> to be present in
>
> libraries/liblber/sockbuf.c:
>    sb_dgram_read()
>    sb_dgram_write()
> libraries/libldap/result.c:
>    try_read1msg()
>
> and saw now that this hadn't been fixed yet in HEAD. However, this
> seems to concern CLDAP only, where, as the comment in
> libraries/liblber/sockbuf.c says: "All data reads and writes are
> prefixed with a sockaddr containing the address of the remote entity."
>
> This is simply not going to work with IPv6 addresses.
>
> One way to fix this would be to use a struct sockaddr_storage instead,
> but that would break compatibility. A possible workaround could be
> checking the address family and use a struct sockaddr_storage for
> IPv6, otherwise a struct sockaddr, but that looks a bit ugly to
> me. What do you people think?
>
> Thorild Selén
> Datorföreningen Update / Update Computer Club, Uppsala, SE
>