[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

IPv4-mapped IPv6 addresses

client6 code:

sockfd = socket(AF_INET6, SOCK_STREAM, 0)

bzero(&servaddr, sizeof(servaddr));
servaddr.sin6_family = AF_INET6;
servaddr.sin6_port   = htons(5000); 
inet_pton(AF_INET6, argv[1], &servaddr.sin6_addr)

connect(sockfd, (SA *) &servaddr, sizeof(servaddr)

server6 code:

listenfd = Socket(AF_INET6, SOCK_STREAM, 0);

bzero(&servaddr, sizeof(servaddr));
servaddr.sin6_family = AF_INET6;
servaddr.sin6_addr   = ipv6addr_any;
servaddr.sin6_port   = htons(5000);   

Bind(listenfd, (SA *) &servaddr, sizeof(servaddr));
connfd = Accept(listenfd, (SA *) &cliaddr, &len);  


The inet_pton function is only valid for AF_INET and AF_INET6, you can try AF_INET6 instead of PF_INET6?            

I am not sure Linux box, I am using FreeBSD 4.1 as testing bed. 

In my testing, the following testing cases will using  IPv4-mapped IPv6 address:

1) IPv4 client communicates with IPv6 server, the server will use IPv4-mapped IPv6 address.

2) IPv6 client communicates with IPv4 server, the client will use IPv4-mapped IPv6 address

3) IPv6 client communicates with IPv6 server, the client and server will both accept IPv4-mapped IPv6 address.

Both 1,2 will use IPv4 datagram, 3 will use IPv6 datagram. 

-----Original Message-----
From: [email protected]
Date: Wed, 20 Dec 2000 21:26:19 +0900
To: Julio Baixauli <[email protected]>
Subject: Re: IPv4-mapped IPv6 addresses

> >Li Hong wrote:
> >> 
> >> I built my IPv6 client/server using IPv4-mapped IPv6 address, address format like ::ffff:a.b.c.d
> >> These two hosts were on the same Ethernet.
> >	Are you sure the communication is made in IPv6? The kernel handles
> >these addresses like it would be IPv4 addresses (...I think). How you
> >can skip this default conduct?
> >
> >	In my test program I make:
> >
> >socket() with PF_INET6 & SOCK_STREAM
> >connect() to ::ffff:a.b.c.d
> >
> >...and I can see, at least, ARP packets for a.b.c.d (if any route is
> >found in the route table). This implies that the connection will be made
> >in IPv4, isn't it?
> >

> >	Could you send me any code that can clarify me?	
> 	if the following conditions are true:
> 	- you have configured your (linux) node as IPv4/IPv6 dual stack node
> 	- linux IPv6 stack supports behavior presented in RFC2553 section 3.7
> 	traffic toward IPv6 mapped address (on top of AF_INET6 socket) will
> 	go out the node as IPv4 traffic.  if you run tcpdump on loopback
> 	interface while you run "telnet ::ffff:", you will see IPv4
> 	traffic.  this is expected behavior and you cannot test SIIT with the
> 	node.
> 	if I understand correctly, SIIT specification is written to support
> 	IPv6-only nodes.  you need to at least remove RFC2553 section 3.7
> 	behavior from your test node.  also, you may need to remove IPv4 stack
> 	in your kernel.  at this moment I don't think there's any stack
> 	capable of doing the latter.
> itojun
Get your free email from http://mail.muzi.com
Powered by Outblaze