[svn.haxx.se] · SVN Dev · SVN Users · SVN Org · TSVN Dev · TSVN Users · Subclipse Dev · Subclipse Users · this month's index

Re: IPv6 URL support in SVN? v1.8.4 works with IPv4, not with IPv6

From: <darx_at_sent.com>
Date: Sat, 02 Nov 2013 13:06:40 -0700

On Sat, Nov 2, 2013, at 10:55 AM, Mark Phippard wrote:
> I believe support for IPv6 in the SVN client is based solely on how the
> APR library was compiled. It has to have IPv6 support compiled in as it
> does the TCP connections etc.

It appears to be a problem with SVN's ability to name-resolve, not
whether it's IPv6 enabled.

 (1) resolv.conf -> IPv4, packaged svn co @ URL-target
 ====> OK
 (2) resolv.conf -> IPv6, packaged svn co @ URL-target
 ====> FAIL
 (3) resolv.conf -> IPv4, built-from-src svn co @ URL-target
 ====> OK
 (4) resolv.conf -> IPv6, built-from-src svn co @ URL-target
 ====> FAIL
 (5) resolv.conf -> IPv4, packaged svn co @ IPv4-address-target
 ====> OK
 (6) resolv.conf -> IPv6, packaged svn co @ IPv4-address-target
 ====> OK
 (7) resolv.conf -> IPv4, built-from-src svn co @ IPv6-address-target
 ====> OK
 (8) resolv.conf -> IPv6, built-from-src svn co @ IPv6-address-target
 ====> OK

I.e., SVN's name-resolution of URL-targets FAILs when resolv.conf points
to IPv6 nameserver IPs. NOT an issue of whether apr's IPv6-enabled.

Details:

Building a local, known-to-be-IPv6-enabled apr instance

        cd /home/darx/SVN_TEST
        wget http://download.nextag.com/apache/apr/apr-1.4.8.tar.gz
        wget http://download.nextag.com/apache/apr/apr-util-1.5.2.tar.gz
        tar zxvf apr-1.4.8.tar.gz
        tar zxvf apr-util-1.5.2.tar.gz

        cd apr-1.4.8
        ./configure \
        --prefix=/home/darx/SVN_TEST/apr1 \
        --libdir=/home/darx/SVN_TEST/apr1/lib64 \
        --enable-ipv6
        make -j4
        make install

        cd ../apr-util-1.5.2
        ./configure \
        --prefix=/home/darx/SVN_TEST/apr1 \
        --libdir=/home/darx/SVN_TEST/apr1/lib64 \
        --with-apr=/home/darx/SVN_TEST/apr1/bin/apr-1-config
        make -j4
        make install

        ls -al /home/darx/SVN_TEST/apr1/lib64/*.so
                lrwxrwxrwx 1 root root 17 Nov 2 11:39
                /home/darx/SVN_TEST/apr1/lib64/libapr-1.so ->
                libapr-1.so.0.4.8*
                lrwxrwxrwx 1 root root 21 Nov 2 11:40
                /home/darx/SVN_TEST/apr1/lib64/libaprutil-1.so ->
                libaprutil-1.so.0.5.2*

building svn against those libs

        cd /home/darx/SVN_TEST
        wget
        http://psg.mtu.edu/pub/apache/subversion/subversion-1.8.4.tar.gz
        tar zxvf subversion-1.8.4.tar.gz
        cd subversion-1.8.4

        LDFLAGS="-L/home/darx/SVN_TEST/apr1/lib64
        -Wl,-rpath,/home/darx/SVN_TEST/apr1/lib64 -laprutil-1 -lapr-1"
        LIBS="-laprutil-1 -lapr-1"

        ./configure \
        --prefix=/home/darx/SVN_TEST/svn184 \
        --libdir=/home/darx/SVN_TEST/svn184/lib64 \
        --with-apr=/home/darx/SVN_TEST/apr1/bin/apr-1-config \
        --with-apr-util=/home/darx/SVN_TEST/apr1/bin/apu-1-config \
        --with-gnu-ld \
        --with-serf
        make -j4
        make install

verify libapr* link

        ldd /home/darx/SVN_TEST/svn184/bin/svn | grep apr
                libaprutil-1.so.0 =>
                /home/darx/SVN_TEST/apr1/lib64/libaprutil-1.so.0
                (0x00007f5cdec92000)
                libapr-1.so.0 =>
                /home/darx/SVN_TEST/apr1/lib64/libapr-1.so.0
                (0x00007f5cde83b000)

with resolvers set to IPv4

        cat /etc/resolv.conf
                nameserver 74.207.241.5
                nameserver 74.207.242.5
                options rotate

checking hosts

        host svn.apache.org
                svn.apache.org is an alias for svn.geo.apache.org.
                svn.geo.apache.org has address 140.211.11.4
        host 140.211.11.4
                4.11.211.140.in-addr.arpa domain name pointer
                eris.apache.org.
        host eris.apache.org
                eris.apache.org has address 140.211.11.4
        dig A eris.apache.org +short
                140.211.11.4
        dig AAAA eris.apache.org +short
                (empty)

no problems with resolver.

testing svn w/ipv6-enabled apr when resolvers are @IPv4

        rm -rf ~/svn-test*
        wget http://svn.apache.org/repos/asf/subversion/trunk -O
        ~/svn-test.LICENSE
                ...
                2013-11-02 12:41:34 (117 MB/s) -
                ‘/root/svn-test.LICENSE’ saved [1295/1295]
                /home/darx/SVN_TEST/svn184/bin/svn \
                 co http://svn.apache.org/repos/asf/subversion/trunk
                 ~/svn-test
                        ...
                        Checked out revision 1538258.

works.

with resolvers set to IPv6

        cat /etc/resolv.conf
                nameserver 2600:3c01::2
                nameserver 2600:3c01::3
                options rotate

checking hosts

        host svn.apache.org
                svn.apache.org is an alias for svn.geo.apache.org.
                svn.geo.apache.org has address 140.211.11.4
        host 140.211.11.4
                4.11.211.140.in-addr.arpa domain name pointer
                eris.apache.org.
        host eris.apache.org
                eris.apache.org has address 140.211.11.4
        dig A eris.apache.org +short
                140.211.11.4
        dig AAAA eris.apache.org +short
                (empty)

no problems with resolver.

testing svn w/ipv6-enabled apr when resolvers are @IPv6

        rm -rf ~/svn-test*
        wget http://svn.apache.org/repos/asf/subversion/trunk -O
        ~/svn-test.LICENSE
                ...
                2013-11-02 12:42:19 (85.8 MB/s) -
                ‘/root/svn-test.LICENSE’ saved [1295/1295]
        /home/darx/SVN_TEST/svn184/bin/svn \
         co http://svn.apache.org/repos/asf/subversion/trunk ~/svn-test
                svn: E670002: Unable to connect to a repository at URL
                'http://svn.apache.org/repos/asf/subversion/trunk'
                svn: E670002: Name or service not known

fails.

retesting @ another URL

        rm -rf ~/svn-test*
        /home/darx/SVN_TEST/svn184/bin/svn \
         co http://www.nlnetlabs.nl/svn/nsd/tags/NSD_4_0_0_REL/
         ~/svn-test
                svn: E670002: Unable to connect to a repository at URL
                'http://www.nlnetlabs.nl/svn/nsd/tags/NSD_4_0_0_REL'
                svn: E670002: Name or service not known

also fails.

trying at numeric IPv6

        dig AAAA www.nlnetlabs.nl +short
                2001:7b8:206:1::1

        rm -rf ~/svn-test*
        /home/darx/SVN_TEST/svn184/bin/svn \
         co http://[2001:7b8:206:1::1]/svn/nsd/tags/NSD_4_0_0_REL/
         ~/svn-test
                ...
                Checked out revision 4089.

succeeds

and just for completeness, retesting the ORIGINAL, distro-packaged svn
bin

                rm -rf ~/svn-test*
                /usr/bin/svn \
                 co
                 http://[2001:7b8:206:1::1]/svn/nsd/tags/NSD_4_0_0_REL/
                 ~/svn-test
                ...
                Checked out revision 4089.
Received on 2013-11-02 21:07:10 CET

This is an archived mail posted to the Subversion Users mailing list.